我们使用STL已经很长时间了,所以任何帮助都会受到赞赏。不确定我们在这里做错了什么......
鉴于此,为什么此代码会抛出错误:
“您无法分配给const的变量”
struct person
{
int age;
bool verified;
string name
bool operator< (person const &p)
{
return (age < p.age);
}
};
multiset<person> msPerson;
multiset<person>::iterator pIt;
// add some persons
while (adding people)
{
Person p;
p.name=getNextName();
p.age=getNextAge();
msPerson.insert(p);
}
pIt = msPerson.begin();
// try to verify
pIt->verified = true; <---- **error here....**
答案 0 :(得分:2)
如果订购了容器,它们将返回一个const迭代器。这个想法是,如果你更改容器不知道的内容,它不能保证订单。矢量没有,但地图确实如此。
如果您确定更新不会影响排序顺序,则可以丢弃常量。如果你这样做,一如既往地谨慎行事。
答案 1 :(得分:1)
设置返回只读迭代器。 stl中的其他容器没有(例如vector)。
答案 2 :(得分:-1)
你应该使用
(*pIt).verified = true;
- &GT;没有为STL迭代器定义operator。