我有一张班级地图。如果我使用迭代器来遍历地图,我无法修改类的内容,因为它们需要是const。无论如何,一个人可以迭代一个地图(或使用迭代器的其他STL容器)并调用一个修改每个对象内容的函数?
例如:
#include <iostream>
#include <map>
#include <string>
using namespace std;
class stuff
{
public:
void setFoo(int foo);
int getFoo();
private:
int aFoo;
};
void stuff::setFoo(int foo)
{
this->aFoo = foo;
}
int stuff::getFoo()
{
return this->aFoo;
}
int main()
{
stuff myStuff;
stuff myOtherStuff;
myStuff.setFoo(10);
myOtherStuff.setFoo(20);
map<int, stuff> myMap;
myMap.insert(pair<int,stuff>(0, myStuff));
myMap.insert(pair<int,stuff>(5, myOtherStuff));
map<int, stuff>::const_iterator it = myMap.begin();
while (it != myMap.end())
{
it->second.setFoo(it->second.getFoo() * 5); //Expect myStuff.aFoo = 50 and myOtherStuff.aFoo = 100
cout << it->first << " " << it->second.getFoo() << endl;
it++;
}
}
由于const限制,这不起作用。什么是让它按预期工作的正确方法?
谢谢!
答案 0 :(得分:4)
只需使用map<int, stuff>::iterator
代替map<int, stuff>::const_iterator