我有一个这样的向量:
std::vector<std::vector<char> > _lines;我想迭代这些向量和包含在其中的向量,但是我不确定如何使用第一个向量的迭代器访问内部向量?
我已经有了以下内容:
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?
}发布于 2011-02-06 20:31:01
for (std::vector<std::vector<char> >::iterator i = _lines.begin();
i != _lines.end(); ++i)
{
for (std::vector<char>::iterator j = i->begin(); j != i->end(); ++j)
{
// ... use *j
}
}如果您使用的是现代编译器,则可以使用C++0x功能auto自动推断类型:
for (auto i = _lines.begin(); i != _lines.end(); ++i)
{
for (auto j = i->begin(); j != i->end(); ++j)
{
// ... use *j
}
}发布于 2011-02-06 20:30:39
您不能指定像这样的(*first_iter)::iterator类型。只需使用std::vector<char>::iterator即可。
(*first_iter)->begin()应为(*first_iter).begin() (或first_iter->begin())。*first_iter是一个std::vector<char>,而不是一个指针。
发布于 2011-02-06 20:30:52
你需要自己拼写内部迭代器的类型,你不能通过实例上的作用域运算符::来访问类的类型。
std::vector<char>::iterator second_iter = ...https://stackoverflow.com/questions/4913272
复制相似问题