向量-使用迭代器vs索引 我对C++,< /P>比较陌生
我有两段代码:向量-使用迭代器vs索引 我对C++,< /P>比较陌生,c++,C++,我有两段代码: for (std::vector<int>::size_type i = 0; i != inventoryvec.size(); i++) { cout << inventoryvec[i].description << endl; } for(std::vector::size_type i=0;i!=inventoryvec.size();i++) { cout使用*运算符取消对向量的引用 将inventoryvec[it]替换
for (std::vector<int>::size_type i = 0; i != inventoryvec.size(); i++)
{
cout << inventoryvec[i].description << endl;
}
for(std::vector::size_type i=0;i!=inventoryvec.size();i++)
{
cout使用*
运算符取消对向量的引用
将inventoryvec[it]
替换为(*it)
当然,像往常一样,您可以使用
it->description
作为(*it)的缩写。description
迭代器只是抽象指针。
迭代器指向一个成员。您可以使用*
解除对它的引用(或者您可以使用->
),使用++
推进它,然后使用-
将它移回一个项目(如果实现了该操作)
对于向量,实际上没有抽象。向量迭代器是(或可以是)(专门化除外)字面上是指向
std::vector
包装的数组成员的指针。您可以将std::vector::iterator
视为项类型的指针,但更为复杂。因此,您可以使用解引用操作符(aka*)访问它所指向的数据。你也可以使用->
操作符我想可能有一些例子显示了如何在web上的某个地方迭代向量。是的,谢谢,更具体地问为什么它不能像iIt那样使用,因为你需要取消引用*它而不是它
-s v值。事实上,it
是一个迭代器对象,您可以使用运算符*
来获取它所持有的值。非常感谢您-因此要澄清一下-“it”表示给定索引处的值-在本例中是item类型的对象,以及地址,直到它被*或->解引用为止?抱歉,不是运算符*,因为这是用于乘法的,但您需要解引用它。谢谢您,这有助于我的理解
for (std::vector<items>::iterator it = inventoryvec.begin(); it != inventoryvec.end(); ++it)
{
cout << inventoryvec[it].description;
}