网站建设方案书个人,怎样可以做网站,可以推广网站,承德网站建设设计目录
1. 基本概念
2. 构造和赋值
3. 大小和交换
4. 插入 和 删除
5. 统计 和 查找
6. set容器的排序 1. 基本概念 set和multiset属于关联式容器#xff0c;底层结构式二叉树#xff0c;所有元素都会在插入时自动排序。
如果你对容器的概念#xff0c;或是二叉树不太了…目录
1. 基本概念
2. 构造和赋值
3. 大小和交换
4. 插入 和 删除
5. 统计 和 查找
6. set容器的排序 1. 基本概念 set和multiset属于关联式容器底层结构式二叉树所有元素都会在插入时自动排序。
如果你对容器的概念或是二叉树不太了解可以快速浏览一下下面这两篇文章
C中STL的概念——零基础/小白向适合竞赛初学C者使用-CSDN博客
数据结构入门————树C语言/零基础/小白/新手模拟实现例题讲解-CSDN博客 set和muliset 的区别是什么呢 set不允许插入重复的数据元素 multiset允许插入重复的数据元素 我们先写一段代码展示set容器插入和打印下面这段代码你不需要先出来只需要看懂大概即可部分不了解下面都会有讲解。
setint s;
//插入3个元素
s.insert(10);
s.insert(30);
s.insert(20);for(setint::iterator it s.begin();it!s.end();it)
{cout*itendl;
}
//打印 10 20 30 ser容器的迭代器的写法就是setT::iterator 上面这段代码我们先插入了10,30,20最后打印却是10 20 30这是因为set容器默认将插入的数据从小到大排序当然这是针对内置数据类型。如果想要从大到小或者排序自定义数据类型下面会有所讲解。 下面介绍set容器的接口都是先展示函数原型在展示代码应用。
2. 构造和赋值 setT s; //默认构造 set(const set s); //拷贝构造 set operator(const set s); //重载了等号操作符 setint s1;setint s2(s1);setint s3;
s3 s1;
3. 大小和交换 size(); //返回容器中元素的数目 empty(); //判断容器是否为空 swap(st); //交换两个集合容器 setint s;
s.insert(10);
s.insert(20);
couts.size()endl;setint s1;
s1.insert(20);
s1.insert(30);
couts1.size()endl;s1.swap(s);//s1 10 , 20
//s 20 , 30
4. 插入 和 删除 insert(value); //插入元素value erase(pos); //删除pos位置的值 erase(beg,end); //删除区间[beg,end)内的数据 erase(value); //删除元素value clear(); //清楚容器所有元素 setint s;
s.insert(10);
s.insert(20);
s.insert(30);s.erase(s.begin());s.erase(20);s.erase(s.begin(),s.end()); //等价于s.clear();
5. 统计 和 查找 find(key); //查找key是否存在存在返回该元素的迭代器不存在返回end(); cunt(key); //统计key的元素个数 setint s;
s.insert(10);setint::iterator pos s.find(20);
if(pos s.end())
{cout找不到元素;
}
else
{cout找到了该元素;
}couts.count(10)endl; 对于set来说key的元素个数要么为0要么为1不可能大于1而multiset元素个数可以大于等于1。 6. set容器的排序 对于set容器默认是从小到大排序如果我们想要从大到小排序呢这里就要用到仿函数。
class MyCompare()
{
public:bool operator(int v1 ,int v2) const{return v1 v2;}
}setint, MyCompare s;
s.insert(10);
s.insert(20);
s.insert(30);for(setint, MyCompare::iterator it s.begin();it!s.end();it)
{cout*itendl;
}最后打印的结果就是30 20 10。这只是对于内置数据类型的排序还有自定义数据类型的排序。 对于自定义的数据类型要使用自定义排序否则可能编译不过。
struct person
{person(string n, int a){this-name n;this-age a;}string name;int age;
};struct compare_name
{bool operator()(person p1, person p2) const{return p1.age p2.age;}
};person p1(lxp, 19);
person p2 { ajm,20 };setperson, compare_name s;s.insert(p1);
s.insert(p2);for (setperson, compare_name::iterator it s.begin();it ! s.end();it)
{cout name it-name age it-age endl;
} 以上我们就简单的对set容器有了了解当然这也只是STL中set容器简单的一部分日后我会在专栏中更新更多更复杂的内容欢迎大家一起学习。