2013-04-13 55 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++)