C++ 迭代std::vector<;标准::向量<;char>>;?
我有一个像这样的向量:C++ 迭代std::vector<;标准::向量<;char>>;?,c++,vector,iterator,C++,Vector,Iterator,我有一个像这样的向量: std::vector<std::vector<char> > _lines; std::vector\u行; 我想迭代这些向量和其中包含的向量,但是我不确定如何使用第一个向量的迭代器访问内部向量 我已有以下资料: std::vector<std::vector<char> >::iterator first_iter = _lines.begin(); for (; first_iter != _li
std::vector<std::vector<char> > _lines;
std::vector\u行;
我想迭代这些向量和其中包含的向量,但是我不确定如何使用第一个向量的迭代器访问内部向量
我已有以下资料:
std::vector<std::vector<char> >::iterator first_iter = _lines.begin();
for (; first_iter != _lines.end(); first_iter++)
{
(*first_iter)::iterator second_iter = (*first_iter)->begin(); // something is wrong with this? How do I get the second vector to iterate?
}
std::vector::iterator first\u iter=\u lines.begin();
对于(;first_iter!=\u lines.end();first_iter++)
{
(*first_iter)::迭代器second_iter=(*first_iter)->begin();//这有问题吗?如何让第二个向量进行迭代?
}
您不能指定这样的类型(*第一步)::迭代器
。只需使用std::vector::iterator
(*first\u iter)->begin()
应该是(*first\u iter).begin()
(或者first\u iter->begin()
)*首先,iter
是一个std::vector
,而不是指针。您需要自己拼写内部迭代器的类型,您无法通过实例上的作用域运算符::访问类的类型
std::vector<char>::iterator second_iter = ...
std::vector::iterator second\u iter=。。。
std::vector::iterator first\u iter=\u lines.begin();
对于(;first_iter!=\u lines.end();first_iter++){
std::vector::iterator second_iter=(*first_iter).begin();//或first_iter->begin()
...
}
这是一种方法:
std::vector<std::vector<char> >::iterator first_iter = _lines.begin();
for (; first_iter != _lines.end(); first_iter++)
{
std::vector<char>::iterator second_iter = first_iter->begin();
}
std::vector::iterator first\u iter=\u lines.begin();
对于(;first_iter!=\u lines.end();first_iter++)
{
std::vector::iterator second_iter=first_iter->begin();
}
您可能应该将字符数据存储在std::strings中,而不是std::vectors中。
for (auto i = _lines.begin(); i != _lines.end(); ++i)
{
for (auto j = i->begin(); j != i->end(); ++j)
{
// ... use *j
}
}
std::vector<std::vector<char> >::iterator first_iter =_lines.begin();
for (; first_iter != _lines.end(); first_iter++) {
std::vector<char>::iterator second_iter = (*first_iter).begin(); // or first_iter->begin()
...
}
std::vector<std::vector<char> >::iterator first_iter = _lines.begin();
for (; first_iter != _lines.end(); first_iter++)
{
std::vector<char>::iterator second_iter = first_iter->begin();
}