[英]iterate on 2D vector with C++
多年以来,我一直没有使用C / C ++,而且我正在尝试复习基础知识,但我有一个问题要遍历3D向量:
#include <string>
#include <vector>
#include <iterator>
int main() {
std::vector< std::vector<std::string> > container;
std::vector<std::string> table;
std::string line;
for (int container_it = 0; container_it < 2; container_it++) {
for (int table_it = 0; table_it < 5 ; table_it++) {
line = "TEST";
table.push_back(line);
}
container.push_back(table);
}
for (std::vector< std::vector<std::string> >::iterator container_it = container.begin(); container_it != container.end(); container_it++)
for (std::vector<std::string>::iterator it = (*container_it)->begin(); it != (*container_it)->end(); it++)
std::cout << *it << std::endl;
}
我得到的错误:
base operand of ‘->’ has non-pointer type ‘std::vector<std::basic_string<char> >’
base operand of ‘->’ has non-pointer type ‘std::vector<std::basic_string<char> >’
我同意chris的观点,在这里我只看到2个维度,并且代码有一些语法错误,但是看起来像这样:
for (std::vector<std::string>::iterator it = (*container_it)->begin(); it != (*container_it)->end(); it++)
应该:
for (std::vector<std::string>::iterator it = (*container_it).begin(); it != (*container_it).end(); it++)
或更简单地说:
for (std::vector<std::string>::iterator it = container_it->begin(); it != container_it->end(); it++)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.