C++ STL set容器常用用法 set 容器查找和统计
set是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetri
set是STL中一种标准关联容器。
它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。
set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset。
/* 3.8.5 set 容器查找和统计*/
// 功能描述:对set容器进行查找数据和统计数据
// 函数原型:
// 1、 find(key) 查找 key 是否存在,若存在,返回该键值的元素的迭代器,如果不存在,则返回set.end();
// 2、 cout(key) 统计 key的元素个数
/* 注意事项 */
// 1、set.end() 指向set容器的最后一个元素的下一个位置的迭代器
// 2、对于 set容器而言,set.count(elem)结果要么是0,要么是1
/* 2022 03 28 */
/* 3.8.5 set 容器查找和统计*/
// 功能描述:对set容器进行查找数据和统计数据
// 函数原型:
// 1、 find(key) 查找 key 是否存在,若存在,返回该键值的元素的迭代器,如果不存在,则返回set.end();
// 2、 cout(key) 统计 key的元素个数
/* 注意事项 */
// 1、set.end() 指向set容器的最后一个元素的下一个位置的迭代器
// 2、对于 set容器而言,set.count(elem)结果要么是0,要么是1
#include<iostream>
#include<set>
using namespace std;
void printSet(set <int> &s)
{
for (set<int>::iterator it = s.begin(); it != s.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
/* 查找 */
void test01()
{
set<int> s1;
// 插入
s1.insert(10);
s1.insert(30);
s1.insert(20);
s1.insert(40);
// 遍历
printSet(s1);
// 查找
//set <int> ::iterator pos = s1.find(300); // s1.find()返回一个迭代器,使用一个迭代器接收它
set <int> ::iterator pos = s1.find(30);
/*if (pos != s1.end())
{
cout << "找到元素: " << *pos << endl;
}
else
{
cout << "没有找到该元素" << endl;
}
*/
// 1、 find(key) 查找 key 是否存在,若存在,返回该键值的元素的迭代器,如果不存在,则返回set.end();
if (pos == s1.end())
{
cout << "没有找到该元素" << endl;
}
else
{
cout << "找到元素: " << *pos << endl;
}
}
/* 统计 */
void test02()
{
set<int> s1;
// 插入
s1.insert(10);
s1.insert(30);
s1.insert(20);
s1.insert(40);
// 遍历
printSet(s1);
//统计30的个数
int num = s1.count(30);
cout << "统计30的个数:" << num << endl;
}
int main()
{
test01();
test02();
system("pause");
return 0;
}
更多推荐
所有评论(0)