2014-02-21 67 views
0

我不知道爲什麼,但由於某種原因,它不會工作。有沒有其他的方法可以輕鬆獲得一個行的大小,這似乎不是很有效。如何獲得cpp中特定向量行的大小?

vector< vector<string> >::iterator row; 
vector<string>::iterator col; 

for (row = vector.begin(); row != vector.end(); row++) 
{ 

    std::ostringstream value; 

    value << vector[*row].size(); //error 

    cout << "The length is" << value << endl; 

    value.str(""); 
    value.clear(); 


} 

error: no match for 'operator[]' (operand types are 'std::vector > >' and 'std::vector >') val << vec[*row].size(); ^

+2

你的意思是'row-> size()'。 –

+2

如果你是第一次做某些事情,比如使用迭代器,你應該從一個非常簡單的例子開始,瞭解基礎知識。只有這樣才能轉向更復雜的東西。 –

+0

不要將變量命名爲「vector」。 – lightalchemist

回答

1

你是你的錯了迭代器..順便說一下,變化:

value << vector[*row].size(); 

有:

value << *row.size(); 
/* or value << row->size(); */ 

至於你的問題,看看這個例子:

typedef vector<vector<string>> Matrix; 
/* specific index */ 
const int index = 3; 
Matrix matrix; 
Matrix::iterator row = matrix.begin() + index; 
cout << row->size(); 
+0

好的,謝謝哈哈 – OnTheFly

0

將迭代器想象成一種廣義指針。一般的規則是,如果你的迭代器itvector<X>::iterator,那麼*itX&

正如你在程序中寫的那樣,row的類型是vector<vector<string>>::iterator。這意味着*rowvector<string>&,您可以調用它的size()函數:通過(*row).size()或更簡單row->size()

相關問題