修改MAP键值(在线等待)
map<int,int>test;
map<int,int>::iterator iter;
iter = test.find(1);
iter->first = 2;//这里怎么赋直
问题点数:0、回复次数:6Top
1 楼JustLikeTheWind(风)回复于 2005-04-03 17:16:47 得分 0
呵呵,严格的说,是不能改变map容器里面存储的数据的键值的。不过我记得在vc6下面的stl实现没有这个限制。如果是其他实现的话,直接的方法就是删除,修改,然后再存进去。Top
2 楼lw1a2(一刀 现在改六点下班了:()回复于 2005-04-03 17:43:35 得分 0
删除,重新插:
#include <map>
#include <iostream>
using namespace std;
int main()
{
map<int,int>test;
map<int,int>::iterator iter;
typedef map<int,int>::value_type valType;
test.insert(valType(1,1));
iter = test.find(1);
test.erase(iter);
test.insert(valType(2,1));
iter = test.find(2);
cout<<(iter->first)<<" "<<(iter->second)<<endl;
system("pause");
}Top
3 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-04-03 18:02:54 得分 0
不要用iterator
test[2]=test[1];
test.erase(1);
就可以了Top
4 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-04-03 18:05:21 得分 0
map支持自动安插,test[2]=test[1]插入key为2,value为test[1]的元素
test.erase(1)删除key为1的元素Top
5 楼phoenix3(凤三)回复于 2005-04-03 19:19:00 得分 0
已经解决了。没有那么麻烦。强制转换就可以了Top
6 楼MagicCarmack(MagiC++)回复于 2005-04-03 20:43:13 得分 0
对,楼主自己的方法比较可以Top




