2013-04-13 53 views
1

2D矢量它已经多年我没有使用C/C++,我想复习基础知识,我有一个问题要重复上一个三维矢量:迭代与C++

#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> >’ 
+0

我看到两个维度... – chris

回答

0

我与克里斯同意,我只在这里看到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++)