c++学习之setmultiset容器

it2025-07-18  6

一、set基本概念

简介:所有元素在插入时都会被自动排序。 本质:set/multiset属于关联式容器,底层结构是用二叉树实现的。 set/multiset区别:set不允许有重复的元素,multiset可以有重复的元素。

二、set构造和赋值

功能描述 创建set容器以及赋值 函数原型 set没有resize函数

set< T>s set< T>s1(s); set &operator = (const set& st);

代码示例

#include <iostream> #include <queue> #include <algorithm> #include <string> #include <set> using namespace std; void print(const set<int>& s) { for(set<int>::const_iterator it = s.begin(); it != s.end(); it++) { cout<< *it <<" "; } cout << endl; } void test2() { set<int>s; s.insert(10); s.insert(50); s.insert(30); s.insert(70); s.insert(20); s.insert(60); s.insert(30); print(s); set<int>s1(s); print(s1); set<int>s2; s2 = s1; print(s2); } int main() { test2(); return 0; }

输出结果

三、set容器的大小和交换

函数原型

size() empty() swap()

代码示例

#include <iostream> #include <queue> #include <algorithm> #include <string> #include <set> using namespace std; void print(const set<int>& s) { for(set<int>::const_iterator it = s.begin(); it != s.end(); it++) { cout<< *it <<" "; } cout << endl; } void test2() { set<int>s; s.insert(10); s.insert(50); s.insert(30); s.insert(70); s.insert(20); s.insert(60); s.insert(30); print(s); set<int>s1(s); print(s1); set<int>s2; s2 = s1; print(s2); if(!s.empty()) { cout<< "s .size = " << s.size() << endl; } set<int>s3; s3.insert(100); s3.insert(500); s3.insert(300); s3.insert(700); s3.insert(200); s3.insert(600); s3.insert(300); cout <<"交换前" <<endl; print(s); print(s3); cout <<"交换后" <<endl; s3.swap(s); print(s); print(s3); } int main() { test2(); return 0; }

输出结果

四、set容器插入和删除

函数原型

insert(elem) clear() earse(pos) erase(beg,end) erase(elem)

五、set查找和统计

函数原型

find(key) //查找key是否存在,返回该值的迭代器,若不存在,则返回set.send count(key) //统计key的元素个数,因为set容器中不能有重复的值,则返回值只能为1或0

#include <iostream> #include <queue> #include <algorithm> #include <string> #include <set> using namespace std; void print(const set<int>& s) { for(set<int>::const_iterator it = s.begin(); it != s.end(); it++) { cout<< *it <<" "; } cout << endl; } void test2() { set<int>s; s.insert(10); s.insert(50); s.insert(30); s.insert(70); s.insert(20); s.insert(60); s.insert(30); print(s); set<int>::iterator pos =s.find(10); if(pos != s.end()) { cout << "找到元素" << *pos << endl; } else { cout << "未能找到元素" << endl; } pos =s.find(100); if(pos != s.end()) { cout << "找到元素" << *pos << endl; } else { cout << "未能找到元素" << endl; } } int main() { test2(); return 0; }

输出结果 六、

最新回复(0)