[C++ API总结] Set

[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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值