set可以理解为一个不重复且有序的集合,实现原理红黑二叉树。
一般我们对与set的使用集中在以下几种操作:1.声明或创建set集合 2.插入操作 3.删除操作 4。判断集合中是否有元素 5.返回集合中元素的个数 6.遍历整个集合。
具体代码:
#include
using namespace std;
int n,m;
//建立
set intset;
set stringset;
int main(){
string s1="测试1";
string s2="测试2";
string s3="测试3";
//插入
stringset.insert(s3);
stringset.insert(s1);
//返回集合中元素数量
cout<<"前两次插入完成后元素的数量:"<::iterator setstringiterator;
for(setstringiterator=stringset.begin();setstringiterator!=stringset.end();setstringiterator++){
cout<<*setstringiterator<<" ";
}
//删除
stringset.erase(s3);
cout<<"删除后元素个数为:"<
运行结果:
map头文件作用#include
map是一个关联容器,第一个称为关键字(key)每个key只能在map中出现一次。第二个成为该关键字的值(value)。map是以模板的形式实现,可以存储任意类型的数据,map主要用于一对一映射的情况,内部所有的数据都是有序的。
可以把map理解为一个函数,key为自变量,value为因变量,两者一对一映射,通过key来寻找value。所有的元素都是两个值key(键值)value(实值)。
所有元素都会按键值进行排序,属于关联式容器,不允许插入重复的key值
一.构造与赋值
构造:map
m; 赋值:m.insert(pair
(1,10));
具体代码:
#include
#include
二.大小与交换
size();//返回容器中元素的个数
empty();//判断是否为空
swap(st);//交换两个集合容器
代码实现:
void test02(){
map m1;//创建
m1.insert(pair(5,55));//赋值语句,1起索引作用,10实值
m1.insert(pair(6,66));
map m2;
m2.insert(pair(7,77));
m2.insert(pair(8,8));
if(m1.empty()){//判断是否为空
cout<<"m为空"<
运行结果:
三.插入和删除
insert(elem);//在容器中插入元素
clear();//清除所有元素
erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器
erase(beg,end);//删除区间元素,返回下一个元素的迭代器
erase(key);//删除值为key的元素
四种插入方式:
m.insert(pair(1,10));
m.insert(make_pair(3,23));
m.insert(map::value_type(4,34));
m[4]=40;//不建议插入,但可以利用key访问value
代码实现:
void test01(){
map m;//创建
m.insert(pair(1,10));
m.insert(make_pair(2,23));
m.insert(map::value_type(4,34));
m[3]=40;
printmap(m);
//删除
m.erase(3); //删除key为3的数
printmap(m);
m.erase(m.begin());//删除第一个数
printmap(m);
}
运行结果:
四.查找合统计
find(key);//查找key是否存在,若存在,返回改建的元素迭代器,所不存在,返回set.end();
count(key);//由于map不包含重复的key,因此返回值为1或者0,表示包含。
void test03(){
map m;//创建
m.insert(pair(1,10));
m.insert(make_pair(2,23));
m.insert(map::value_type(4,34));
m[3]=40;
//查找
map::iterator pos=m.find(3);
if(pos!=m.end()){
cout<<"找到了元素key="<<(*pos).first<<"value="<second<