c++ 关于multimap对象是不是不能用提取迭代器的方法赋值?

#include<iostream>#include<cstdlib>#include<vector>#include<map>usingnamespacestd;//t... #include<iostream>
#include<cstdlib>
#include<vector>
#include<map>

using namespace std;

//typedef
typedef int I;
typedef int ARR[10];
typedef char C;

//宏定义
#define N 3
#define X(a,b) (((a)+(b))*3)

//自定义函数声明
void f1();
void f2();

//主函数
int main(int argc,char * argv[])
{
cout<<"f1():"<<endl;
f1();
cout<<endl;
cout<<"f2():"<<endl;
f2();
cout<<endl;
cout<<argc<<ends<<* argv<<endl;
system("pause");
return 0;
}

//自定义函数
void f1()
{
//定义vector对象
vector<I> intVect(5);
//定义iterator变量
vector<I>::iterator it_out=intVect.begin();
//提取输入迭代器
* it_out++ =1;
* it_out++ =3;
* it_out++ =5;
* it_out++ =7;
* it_out=9;
cout<<"Vect:";
//定义iterator变量
vector<I>::iterator it=intVect.begin();
cout<<"Vect:"<<endl;
while(it!=intVect.end())
{
cout<<* it++<<' ';
}
cout<<endl;
}

void f2()
{
//定义multimap对象
multimap<I,C> mmap;
//定义multimap对象
multimap<I,C>::iterator it_out=mmap.begin();
//insert()
mmap.insert(multimap<I,C>::value_type(3,'t'));
mmap.insert(multimap<I,C>::value_type(2,'t'));
mmap.insert(multimap<I,C>::value_type(3,'t'));
cout<<1<<endl;
//提取输入迭代器
// (* it_out).first=3;
(* it_out++).second='b';
cout<<1<<endl;
// (* it_out).first=2;
(* it_out++).second='a';
// (* it_out).first=3;
(* it_out).second='b';
//定义iterator变量
multimap<I,C>::iterator it=mmap.begin();
cout<<"Map:"<<endl;
while(it!=mmap.end())
{
cout<<(* it).first<<ends<<(* it).second<<endl;
it++;
}
cout<<endl;
}
展开
 我来答
兔子和小强
推荐于2016-09-13 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1441万
展开全部

你不能通过迭代器修改map或set里面的值,因为里面的值是按一定规则排列的(其实是红黑树结构)。修改了就不符合这结构,所以提示:

map/set iterators not incrementable


想要修改map或set里面的元素需要先删除,之后再插入。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式