我无法理解以下行为。当我使用currPMap
修改值时,实际位置的值没有被修改。为什么呢。
我检查了参考operator[]
并at()
返回参考,所以这应该有效。
#include <iostream>
#include <vector>
#include <map>
using namespace std;
typedef map<int, int> intMap;
typedef map<int, int>::iterator mapIt;
int main(void) {
vector< map<int, intMap > > b(2);
int curr=0, next=1;
map<int, intMap> currPMap = b.at(curr);
(currPMap[4])[2] = 3; //modified by currPMap.
cout<<((b.at(curr))[4])[2]<<endl;
((b.at(curr))[4])[2] = 3; //modified using the actual vector.
cout<<((b.at(curr))[4])[2]<<endl;
}
输出:
0
3
PS:我知道我在这里做的事情可以通过这个设置中的许多其他方式来实现,但这不是实际的程序。这只是我在代码中面临的问题的显式版本。如果有人回答这种方法有什么问题,我将不胜感激。