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();
}