我可以为迭代器赋值吗?

时间:2014-04-09 18:33:42

标签: c++ vector visual-studio-2013 stl iterator

我正在处理一些代码here.

简短的故障,它是一个基于文本的冒险,当玩家从他们的库存中删除一个项目时,vector<_invent>_invent是先前声明的结构),代码在

行失败
*tempi = player_data.inventory[i];

,错误是&#34;矢量迭代器不能解除引用&#34;

我知道迭代器是一个奇特的指针。我的问题是,我应该将inventory[i]的地址分配给tempi吗?或者我应该将inventory[i]的值分配给tempi指向的对象

1 个答案:

答案 0 :(得分:2)

您应该使用

tempi = player_data.inventory.begin()
std::advance( tempi , i );

如果player_data.inventorystd::vector

简单地说,

tempi = player_data.inventory.begin() + i;