c++的stl中的set/multiset
来源:互联网 发布:php 模拟微信浏览器 编辑:程序博客网 时间:2024/05/22 14:30
1. set和multiset的头文件是#include<set>,他们的区别是
(1)set不能有重复的元素,而multiset可以有重复的元素。
(2)如果定义的是multiset类型的元素时,当删除元素a,那么所有的a都会被删除。
(3)统计元素个数,s.count(a);时,set能返回0或1,而multiset是可以返回多个的。
2.反向遍历则用反向迭代器,例如定义int型的反向迭代器:
set<int>::reverse_iterator rit;
For(rit=s.rbegin();rit!=s.rend();it++)
cout<<*rit<<” ”;
此时的s.rbegin()相当于s.end()。s.rend()相当于s.begin()。
3. find()函数,返回一个指向被查找到元素的迭代器,如果找不到的话就返回s.end()。例如:
set<int>::iterator it;
It=s.find(5);
If(it!=s.end())
cout<<*it<<endl;
Else
cout<<”not find”<<endl;
4. 对于结构体的,要运算符重载,例如:
#include<iostream>
#include<string>
#include<set>
using namespace std;
struct Info{
string name;
float score;
bool operator < (const Info &a)const
{
return a.score<score;
}
};
int main()
{
set<Info> s;
Info info;
info.name="Jack";
info.score=80;
s.insert(info);
info.name="Tom";
info.score=20;
s.insert(info);
info.name="Nacy";
info.score=60;
s.insert(info);
info.name="Elano";
info.score=75;
s.insert(info);
info.name="David";
info.score=90;
s.insert(info);
set<Info>::iterator it;
for(it=s.begin();it!=s.end();it++)
cout<<(*it).name<<":"<<(*it).score<<endl;
return 0;
}
5. set的元素是用insert函数插入,插入之后自动排序。
ms.insert("abc");
ms.insert("123");
ms.insert("111");
ms.insert("aaa");
ms.insert("123");
ms.insert("bbb");
multiset<string>::iterator it;
for(it=ms.begin();it!=ms.end();it++)
cout<<*it<<” ”;
输出的结果为:111 123 123 aaa abc bbb。
6. 删除一个元素的函数为erase,例如:
multiset<string> ms;
ms.insert("abc");
ms.insert("123");
ms.insert("111");
ms.insert("aaa");
ms.insert("123");
ms.insert("bbb");
int n=ms.erase("123");//此时n=删除的元素的个数,也可以不定义
cout<<"total deleted:"<<n<<endl;//n,直接用ms.erase(“123”)即可。
cout<<"all elements after deleted:"<<endl;
for(it=ms.begin();it!=ms.end();it++)
cout<<*it<<endl;
7. set的初始化是用ms.insert()函数。
- c++的stl中的set/multiset
- STL中的set与multiset
- c++ STL中的set和multiset的使用
- C++/STL关联容器-集合-multiset&set的用法
- STL中的set和multiset学习小记
- C++::STL::容器类::set/multiset
- STL set和multiset的使用
- c++ STL set和multiset的使用
- C++ STL set和multiset的使用
- C++ STL set和multiset的使用
- c++ STL set和multiset的使用
- STL中set与multiset的区别
- STL set和multiset的用法
- STL 简单 set 和 multiset 的实现
- C++ STL set和multiset的使用
- C++ STL set和multiset的使用
- 【STL】set和multiset的初步认知
- C++的STL之set/multiset
- spring对JDBC的支持
- php使用浏览器 header 下载图片(处理图片多大)
- MyBatista Generator自动生成mapper
- 如何将自已的java jar 包加入到自已本地的maven仓库中
- git分享
- c++的stl中的set/multiset
- JAVA中int类除法运算保留2位
- 欢迎使用CSDN-markdown编辑器
- 自动化测试第三课:浏览器的基础操作
- 直线方程的点斜式、两点式、斜截式的公式是什么
- 线程安全
- Javaweb之cookic
- NOIP赛前总结
- hihocoder1014 trie树模板