向量-使用迭代器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;
    }