2014-02-27 49 views
0

非常基本的問題,但我很難理解如何輸出這個。如何輸出漂浮物矢量的矢量?

我有一個

vector< vector<float> > distance_table; 

它是充滿了它的各種數字。現在我想輸出這些。

這裏是我的代碼:不工作

vector< vector<float> > :: iterator row; 
    vector<float> ::iterator col; 
    for (row = distance_table.begin(); row !=distance_table.end(); row++) 
    { 
     for (col = row->begin(); col !=row->end(); col++) 
     { 
      cout << distance_table[row][col] <<endl; 

     } 

    } 

的distance_table [行] [COL]。這顯然不是正確的語法。什麼是正確的語法?

+0

這將是'* col'。 – 0x499602D2

回答

4

您不能使用迭代器進行索引。你要麼使用整數,要麼使用迭代器,但不能同時使用整數。您可以取消引用第二個迭代器以獲取特定向量內的值。

vector< vector<float> > :: iterator row; 
vector<float> ::iterator col; 
for (row = distance_table.begin(); row !=distance_table.end(); row++) 
{ 
    for (col = row->begin(); col !=row->end(); col++) 
    { 
     cout << *col << endl; 
    } 

} 
2

col是在內部向量迭代器,所以你只需要取消對它的引用來獲取值:

cout << *col << endl; 
1

最簡單的方法是使用基於for語句的範圍內。例如

for (const std::vector<double> &v : distance_table) 
{ 
    for (double x : v) std::cout << x << ' '; 
    std::cout << std::endl; 
} 

至於你的代碼,然後改爲迭代器,如果你想使用下標操作符,你應該使用向量的元素索引訪問。

例如

typedef std::vector<std::vector<double>>::size_type size_type; 

for (size_type i = 0; i < distance_table.size(); i++) 
{ 
    for (size_type j = 0; j < distance_table[i].size(); j++) 
    { 
     std::cout << distance_table[i][j] << ' '; 
    } 
    std::cout << std::endl; 
} 
0

一種方法做你想要什麼。請注意,這種方法不使用迭代器,儘管迭代器的使用同樣好。

#include <vector> 
#include <iostream> 

using namespace std; 

int main(int argc, char **argv) 
{ 
    vector< vector<float> > distance_table; 

    vector<float> a {0, 1}; 

    distance_table.push_back(a); 
    for (auto i = 0; i <distance_table.size(); i++) 
    { 
     for (auto j = 0; j <distance_table[i].size(); j++) 
     { 
      cout << distance_table[i][j] << endl; 

     }  
    } 
}