c++9.Set/Multiset容器
大约 2 分钟
Set/Multiset
这两者的主要区别在于 std::set
中不允许重复的元素,而 std::multiset
允许重复的元素。
std::set
定义和概念:
定义:
#include <set>
std::set<T> mySet;
T
是集合中元素的类型。
主要操作:
insert(): 插入元素到集合中。
mySet.insert(element);
erase(): 移除集合中的元素。
mySet.erase(element);
find(): 查找元素在集合中的位置。
auto it = mySet.find(element); if (it != mySet.end()) { // 元素找到 }
size(): 返回集合中元素的个数。
std::size_t setSize = mySet.size();
empty(): 检查集合是否为空。
if (mySet.empty()) { // 集合为空 }
begin() 和 end(): 返回指向集合开头和结尾的迭代器,可用于遍历集合。
auto it = mySet.begin(); while (it != mySet.end()) { // 处理 *it ++it; }
std::multiset
定义和概念:
定义:
#include <set>
std::multiset<T> myMultiset;
T
是多重集合中元素的类型。
主要操作:
std::multiset
提供的操作与 std::set
类似,但不同之处在于 std::multiset
允许元素的重复插入,且 erase()
可以一次性删除所有特定值的元素。
insert(): 插入元素到多重集合中。
myMultiset.insert(element);
erase(): 移除多重集合中的元素。
myMultiset.erase(element);
equal_range(): 返回指定值的元素范围。
auto range = myMultiset.equal_range(element); // range.first 是范围的起始迭代器 // range.second 是范围的结束迭代器
count(): 返回指定值在多重集合中出现的次数。
std::size_t count = myMultiset.count(element);
size(): 返回多重集合中元素的个数。
std::size_t multisetSize = myMultiset.size();
empty(): 检查多重集合是否为空。
if (myMultiset.empty()) { // 多重集合为空 }
begin() 和 end(): 返回指向多重集合开头和结尾的迭代器,可用于遍历多重集合。
auto it = myMultiset.begin(); while (it != myMultiset.end()) { // 处理 *it ++it; }
二叉树|红黑树
本章不做介绍,具体收录在数据结构算法中
自动排序
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main()
{
set<string> myset;
myset.insert("你");
myset.insert("好");
myset.insert("ya");
for(set<string>::iterator it = myset.begin(); it != myset.end(); it++)
{
std::cout << *it;
}
}