矢量 - 使用迭代器与索引

时间:2015-12-08 01:19:01

标签: c++

我对C ++比较陌生,

我有两段代码:

    for (std::vector<items>::iterator it = inventoryvec.begin(); it != inventoryvec.end(); ++it) 
    {
        cout << inventoryvec[it].description;
    }

div

第二个代码无效&#34;错误无操作符&#34; []&#34;匹配这些操作数&#34; - 为什么我无法使用&#34;它&#34;以同样的方式使用&#34; i&#34;。它的主要目的是表示一个正确的价值吗?

这是使用迭代器而非索引的限制,还是我做错了。

3 个答案:

答案 0 :(得分:2)

要取消引用向量,请使用*运算符。

inventoryvec[it]替换为(*it)

当然,与往常一样,您可以使用it->description作为(*it).description的简写。

答案 1 :(得分:0)

迭代器只是抽象指针。 迭代器指向成员。您可以使用*取消引用它(或者您可以使用->),使用++推进它,然后使用--将其移回一个项目(如果已实施该操作)

在向量的情况下,几乎没有抽象。向量迭代器是(或可以)(除了特化)字面上指向std::vector包含的数组成员的指针。

答案 2 :(得分:0)

您可以将std::vector<items>::iterator视为items类型的指针,但更复杂。因此,您使用解除引用运算符(aka *)来访问它指向的数据。您也可以使用->运算符