gpt4 book ai didi

c++ - 字符串 vector 初始化的 vector

转载 作者:太空宇宙 更新时间:2023-11-04 14:04:03 25 4
gpt4 key购买 nike

我想知道如何简化和概括字符串 vector 的 vector 初始化:

vector<vector<wstring>> vvValues;

const wchar_t *row1[] = { L"R1C1_variablesize"};
const wchar_t *row2[] = { L"R2C1_vsize" , L"R2C2_varsize", L"R2C3_variabsize"};
const wchar_t *row3[] = { L"R3C1_variablsize", L"R3C2_vasize"};

vvValues.push_back (vector<wstring> (row1, end(vrow1)));
vvValues.push_back (vector<wstring> (row2, end(row2)));
vvValues.push_back (vector<wstring> (row3, end(row3)));

我尝试使用数组的临时数组

const wchar_t **rows[] = {row1, row2, row3);

使用迭代器,我测试成功

for (auto it = begin(rows); it!= end(rows); ++it)
vvValues.push_back (vector<std::wstring> (*it, *it + 0));

在第 1 行、第 2 行、第 3 行上使用 count()、sizeof() 或 end(),行会按预期工作。

-> 但是我不知道如何计算每一行的元素数

sizeof(rows[0]) -> 4
sizeof(rows[1]) -> 12
sizeof(rows[2]) -> 8

甚至更好

sizeof(it) -> 4, 12, 8 on each iteration.

非常感谢

你带领我走向这个工作解决方案

vector<vector<wstring>> vvValues;

// First string -> # of strings excluding index
const wchar_t *row1[] = { L"1", L"R1C1_variablesize"};
const wchar_t *row2[] = { L"3", L"R2C1_vsize" , L"R2C2_varsize", L"R2C3_variabsize"};
const wchar_t *row3[] = { L"2", L"R3C1_variablsize", L"R3C2_vasize"};

const wchar_t **rows[] = {row1, row2, row3);

for (unsigned long it = 0; it < sizeof(rows)/sizeof(wchar_t *); ++it)
vvValues.push_back (vector<std::wstring> (rows[it] + 1,
rows[it] + 1 + wcstoul(rows[it][0], NULL, 0)));

最佳答案

您是否考虑过以空字符串结束每一行?例如:

const wchar_t **rows[] = {"Hello", "everyone", "", 
"start", "of", "row", "2", "",
"now", "three", ""};

您可以轻松检查初始化循环中的空值。

但是,如果您的字符串可以为空,您可以尝试使用一个很少用作标记的奇怪字符串。说 "~~12~" 或者更好地使用不属于您的语言的 unicode 字符。

祝你好运。

关于c++ - 字符串 vector 初始化的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17797595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com