这是否有迭代器?
for (vector<string>:: const_iterator it = vector.begin(); it != vector.end(); ++it)
{
cout << *it << endl;
}
这是一个常规矩阵。
for (vector<vector<string>>:: const_iterator it = vector.begin(); it != vector.end(); ++it)
{
cout << *it << endl;
}
会像这样的工作,还是我必须做其他事情?
答案 0 :(得分:0)
你的“2D矩阵”只是矢量的矢量。迭代它时,每个迭代器都指向一个向量。这并不奇怪。没有理由期望迭代器对向量的元素在这里表现不同。
在您的情况下,您必须提供流式传输字符串向量的代码。这部分不起作用
cout << *it << endl;
在您的第二个示例中,因为ostream& operator<<
没有std::vector<std::string>
。
另请注意,除非明确允许,否则不允许为标准库类型重载std
命名空间运算符,但您可以提供执行此操作的函数:
void streamStuff(std::ostream& o, const std::vector<std::string>>& v)
{
for (const auto& s : v)
o << s << " ";
}
然后
for (vector<vector<string>>::const_iterator it = vector.begin(); it != vector.end(); ++it)
{
streamStuff(std::cout, *it);
cout << endl;
}