stl中map与set
来源:互联网 发布:java string 编码 编辑:程序博客网 时间:2024/05/18 00:52
set:
1、set特性:所有元素都会根据元素的键值自动被排序,set的元素不像map那样可以同时拥有实值和键值,set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值;set的元素值不允许被改变。
2、set拥有与list相同的某些性质:当客户端对它进行元素新增操作或者删除操作时,操作之前的所有迭代器,在操作完成之后都依然有效。
3、set以RB-tree为底层机制,又由于set所开放的各种操作接口,RB-tree也都提供了,所以几乎所有的set操作行为,都只是转调用RB-tree的操作行为而已。
下面是一个小小的set的测试程序
#include<iostream>
#include<set>
using namespace std;
int main(){
int i;
int ia[5]={1,2,3,4,5};
set<int> iset(ia,ia+5);
cout<<"size="<<iset.size()<<endl;
cout<<"3 count="<<iset.count(3)<<endl; //count函数返回的是size_type类型,返回0或者1;
iset.insert(3);//当插入重复的会自动删除;
cout<<"size="<<iset.size()<<endl;
cout<<"3 count="<<iset.count(3)<<endl;
iset.insert(0);
for(auto i=iset.begin();i!=iset.end();++i)
cout<<*i<< ' ';
cout<<endl;
iset.erase(1);
for(auto i=iset.begin();i!=iset.end();++i)
cout<<*i<< ' ';
if(iset.find(1)!=iset.end())
cout<<" yes";
else cout<<" no ";
cout<<endl;
auto it=iset.upper_bound(1); //upper_bound()返回大于键值的第一个iterator;lower_bound()返回大于或等于键值的第一个iterator;
cout<<*it<<endl;
return 0;
}
map:
1、map特性:所有元素都会根据元素的键值自动被排序,map的所有元素都是pair,同时拥有实值和键值。pair的第一元素被视为键值,第二元素被视为实值。map不允许两个元素拥有相同的键值。
pair的定义:
template<class T1, class T2>
struct pair{
typedef T1 first_type;
typedef T2 second_type;
T1 first;
T2 second;
pair() : first(T1()),second(T2()){}
pair(const T1& a, const T2& b) : first(a), second(b){}
};
2、同样的pair的键值是不能修改的,因为map元素的键值关系到map元素的排列规则。但却可以修正map元素的实值。
3、map拥有与list相同的某些性质:当客户端对它进行元素新增操作或者删除操作时,操作之前的所有迭代器,在操作完成之后都依然有效。
4、map以RB-tree为底层机制,又由于map所开放的各种操作接口,RB-tree也都提供了,所以几乎所有的map操作行为,都只是转调用RB-tree的操作行为而已。下面一个小测试例子:
#include<iostream>
#include<map>
using namespace std;
int main(){
map<int,string> simap;
simap[1]="jjhou";
simap[2]="jerry";
simap[3]="jason";
simap[4]="jimmy";
pair<int,string> value(5,string("david"));
simap.insert(value);
map<int,string>::iterator simap_iter=simap.begin();
for(;simap_iter!=simap.end();++simap_iter)
cout<<simap_iter->first<<' '<<simap_iter->second<<endl;
if(simap.find(1)!=simap.end())
cout<<"yes"<<endl;
auto iter=simap.lower_bound(3);
cout<<iter->first<<iter->second<<endl;
return 0;
}
- stl中map与set
- STL set 与 map 实例
- STL中的SET与MAP
- stl之3 set 与map
- 【STL】map与set的使用方法
- STL中set、map的比较函数
- STL中Map和Set应用总结
- STL中map和set详解
- STL中map,set的使用
- STL中map-set的使用
- STL中vector/map/set实现原理
- js中set与map
- STL <set><map>
- stl map set
- STL map&set
- STL set map容器
- 【STL】 map、set;
- STL浅析set&map
- 经典的DES算法详解
- 自制书立
- vim中 E212:无法打开并写入文件 的解决办法
- go client get/post
- MyBatis学习总结(一)——MyBatis快速入门
- stl中map与set
- Spring中循环依赖
- Linux下php安装Redis扩展
- leetcode 376. Wiggle Subsequence 最长摆动序列 + 动态规划DP
- 卷积神经网络的训练
- 谈谈编程的学习方法
- JVM内存模型之运行时常量池
- iOS时间选择器
- 欢迎使用CSDN-markdown编辑器