[C++ API总结] Set
创建
set<string> dictionSet(diction.begin(), diction.end()); // 构造函数初始化
dictionSet.insert(diction.begin(), diction.end()); // 使用insert进行拷贝
std::set<std::string> myset{1, 2,3};//支持在创建 set 容器的同时,对其进行初始化。
添加
a.insert(1)
删除
a.erase(23) // 删除key
a.clear()是用来清空集合中的元素。 // 清空所有元素
查找 find&count
find(key);//查找键key是否存在,如果存在,返回该键的元素的迭代器;若不存在,返回st.end();
lower_bound(keyElem);//返回第一个key >= keyElem的元素的迭代器
upper_bound(keyElem);//返回第一个key>keyElem的元素的迭代器
equal_range(keyElem);//返回容器中key与keyElem相等的上下限的两个迭代器
反转
set是排序的,所以不支持反转
拷贝
set<string> dictionSet(diction.begin(), diction.end()); // 构造函数初始化
dictionSet.insert(diction.begin(), diction.end()); // 使用insert进行拷贝
std::set<std::string> copyset(myset); // 等价于 copyset = myset
判空
a.empty()是判断该集合是否为空。 // 空则返回true
排序
非基本类型:注意由于set是带排序的,所以如果是非基本对象必须有操作符重载
基本类型:c++ set默认是具有升序和自动去重的功能,如果想要其他排序则需要自定义排序规则
使用非基本类型Set
必须重载操作符
// 自定义排序:重载运算符
class Mycompare{
public:
bool operator()(int v1, int v2){//重载运算符
return v1 > v2;//降序排列
}
};
set<int, myCompare> s1;//在定义数组的时候指定排序规则
// 自定义对象排序:重载操作符
class Compare//指定排序规则的仿函数
{
public:
bool operator()(const Person &p1, Person &p2)//加const限定不能修改传入的数据
{
return p1.m_age > p2.m_age;//降序
}
};
set<Person,Compare> s;