LIST是不支持随机访问迭代器的 他是链表结构 ,,,2、仿函数3、set\map函数插入值 的返回类型,可以是返回队组类型判断是否插入成功

**就是 有值 也有地址 ,**有一个指向前面一个值得地,和一个指向后面 一个值的地址。这样就没法随机访问了。。但是有些vector 他只有一个地址,就用一个地址,后面都是联系的 就可以随机访问了。 这是关键。就可以用sort(begin(),end()).

但是有些无法支持,只能 用内置函数,list.sort()。默认排序规制都是从小到大的。
但是可以传一个回调函数,这个函数返回值是bool类型,就可以传进去了,
bool mycompare(int va1 ,int va2){
return va1 >va2; //大的 返回真 大的放前面
}

2、仿函数、

仿函数就是重载了函数运算符(),返回bool类型的回调函数,
改变他的排序规则,。
l.sort(),这个括号是可以放 函数名的,函数可以做参数,因为返回了值,有指定的,
set<int , string,Person>,这个是只能放类型名的,当然也可一再里面写一个函数,返回各种数据类型。
自定义map set 排序
在创建 set map数组前 就应该写好仿函数(类)放入 map,set中的模板 参数列表中,这样才有排序。
map//容器 插值
map<int,int> m;
第一种
insert(pair<int,int >(2,2));
第二种
insert(make_pair(1,2))
第三种
inset(map<int,int>::value_type(2,3))不建议 太长 不好记

第四种
m[4]=5;
不建议第四种,应为如果用来读数
cout<<m[5]<<会 :会默认 m[5] = 0; 创建一个键值key=5,value = 0 的队组。会改变之前的 数据。 所以不建议用他来插入, 常用 建议用来读取。

4、set插入可以返回 队组数据类型,判断是否插入成功。
但是 map 不行,他会报错 “不会计算为接受2个参数的函数”
set<int, int> s;
pair<set::iterator, bool> ret1 = s.insert(10);
cout << ret1.second << endl;
pair<set::iterator, bool> ret2 = s.insert(10);
map<int, int> m12;
m12.insert(make_pair(10, 23));
pair<map<int, int>::iterator, bool> ret12= m12.insert(pair<int,int>(10, 23));
pair<map<int, int>::iterator, bool> ret13 = m12.insert(make_pair<int, int>(10, 23));//编译不成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值