持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情
1.1 set查找和统计
功能描述:
- 对set容器进行查找数据以及统计数据
1.2 函数原型:
find(key);//查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();count(key);//统计key的元素个数
1.3 代码示例:
#include <set>
//查找和统计
void test01()
{
set<int> s1;
//插入
s1.insert(10);
s1.insert(30);
s1.insert(20);
s1.insert(40);
//查找
set<int>::iterator pos = s1.find(30);
if (pos != s1.end())
{
cout << "找到了元素 : " << *pos << endl;
}
else
{
cout << "未找到元素" << endl;
}
//统计
int num = s1.count(30);
cout << "num = " << num << endl;
}
int main() {
test01();
system("pause");
return 0;
}
复制代码
1.4 总结:
- 查找 --- find (返回的是迭代器)
- 统计 --- count (对于set,结果为0或者1)
set是STL中一种标准关联容器。
它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。
set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset。
注意事项
-
- set.end() 指向set容器的最后一个元素的下一个位置的迭代
-
- 对于 set容器而言,set.count(elem)结果要么是0,要么是1
1.5 关于std::set的一些补充
std::set在存储自定义结构时,要重载operator用于查找时使用,比较关键字即可。
比如在PAT甲级1012中的应用。而在查找时,std::set只比较重载运算符中比较的关键字,忽略其他的成分。