如何获得cpp中特定向量行的大小?

时间:2014-02-21 08:26:06

标签: c++ vector

我不知道为什么,但由于某种原因它不起作用。有没有其他方法可以轻松获得一行的大小,这个似乎不是很有效。

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();


}
  

错误:'operator []'不匹配(操作数类型为   'std :: vector&gt; &GT;”和   'std :: vector&gt;')            val&lt;&lt; VEC [*行] .size();                      ^

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

将迭代器视为一种通用指针。一般规则是,如果您的迭代器itvector<X>::iterator,则*itX&

正如您在程序中所写的那样,row的类型是vector<vector<string>>::iterator。这意味着*rowvector<string>&,您可以调用size()函数:(*row).size()或更简单地row->size()