我对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;。它的主要目的是表示一个正确的价值吗?
这是使用迭代器而非索引的限制,还是我做错了。
答案 0 :(得分:2)
要取消引用向量,请使用*
运算符。
将inventoryvec[it]
替换为(*it)
。
当然,与往常一样,您可以使用it->description
作为(*it).description
的简写。
答案 1 :(得分:0)
迭代器只是抽象指针。
迭代器指向成员。您可以使用*
取消引用它(或者您可以使用->
),使用++
推进它,然后使用--
将其移回一个项目(如果已实施该操作)
在向量的情况下,几乎没有抽象。向量迭代器是(或可以)(除了特化)字面上指向std::vector
包含的数组成员的指针。
答案 2 :(得分:0)
您可以将std::vector<items>::iterator
视为items
类型的指针,但更复杂。因此,您使用解除引用运算符(aka *)来访问它指向的数据。您也可以使用->
运算符