文章目录
- 一、查找元素 - set#find 函数
- 1、函数原型 简介
- 2、代码示例 - set#find 函数
- 二、获取元素个数 - set#count 函数
- 1、函数原型 简介
- 2、代码示例 - set#find 函数
一、查找元素 - set#find 函数
1、函数原型 简介
在 C 语言的 STL 标准模板库 , std::set 集合容器 是一个存储唯一元素的容器 , 该容器的底层使用 红黑树 数据结构 实现 ; std::set 容器是有序的 , 存储元素时 会自动按指定规则进行排序 ;
std::set 集合容器类 提供了一个 find 成员函数 , 用于查找 集合容器中 指定值的元素 ;
std::set#find() 函数原型 如下 :
代码语言:javascript复制iterator find(const key_type& k) const;
- 参数解析 :
- 元素类型 : 参数类型 key_type 是 std::set 集合容器 元素类型 ;
- 引用类型 : 为了避免二次拷贝 , 使用该元素类型的 引用类型 key_type& 作为参数类型 ;
- 返回值解析 :
- 找到指定元素 : 该 find 函数返回一个迭代器 , 该 迭代器指向找到的元素 ;
- 没有找到元素 : 如果在 std::set 集合容器中 , 没有找到指定元素 , 则返回 指向集合末尾的迭代器 , 即 std::set::end() 迭代器 , 该迭代器不指向任何元素 , 指向最后一个元素的后一个位置 ;
2、代码示例 - set#find 函数
在下面的代码示例中 ,
首先 , 创建了一个包含整数 1 到 5 的 std::set 集合容器 ,
代码语言:javascript复制 // 初始化
set<int> mySet = { 1, 2, 3, 4, 5 };
然后 , 使用 find 函数查找整数 3 ;
代码语言:javascript复制 // 调用
auto it = mySet.find(3);
最后 , 如果找到 整数 3 , 迭代器指向找到的元素 , 如果没有找到元素 , 迭代器指向末尾位置 ; 可以根据判断 返回的 迭代器是否等于 mySet.end() 值确定 ,
- 如果等于该 末尾迭代器 值 , 说明没有找到元素 ;
- 如果不等于该 末尾迭代器 值 , 说明找到了元素 ;
// 如果找到元素, 迭代器指向找到的元素
// 如果没有找到元素 , 迭代器指向末尾位置
if (it != mySet.end()) {
cout << "找到元素 : " << *it << endl;
}
else {
cout << "未找到元素 "<< endl;
}
代码示例 :
代码语言:javascript复制#include "iostream"
using namespace std;
#include "set"
int main() {
// 初始化
set<int> mySet = { 1, 2, 3, 4, 5 };
// 调用
auto it = mySet.find(3);
// 如果找到元素, 迭代器指向找到的元素
// 如果没有找到元素 , 迭代器指向末尾位置
if (it != mySet.end()) {
cout << "找到元素 : " << *it << endl;
}
else {
cout << "未找到元素 "<< endl;
}
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
找到元素 : 3 请按任意键继续. . .
二、获取元素个数 - set#count 函数
1、函数原型 简介
std::set 集合容器 中的每个元素都是唯一的 , 对于任何元素 , 它 在集合中要么存在 , 要么不存在 , 这意味着其计数只能是 0 或 1 ;
在 std::multiset 集合容器 中 , 统计元素个数是有意义的 ;
std::set 集合容器类 提供了一个 count 成员函数 , 用于确定集合中特定元素的数量 ;
- 对于 std::set 来说 获取的结果只能是 0 或 1 ;
- 对于 std::multiset 容器 , 可以获取元素的个数 ;
这是为了保持与其他 关联容器的接口一致性 , 如 : std::multiset 容器 , std::set 也提供了这个函数接口 ;
count 函数原型如下 :
代码语言:javascript复制size_type count(const key_type& k) const;
- 参数解析 :
- 元素类型 : 参数类型 key_type 是 std::set 集合容器 元素类型 ;
- 引用类型 : 为了避免二次拷贝 , 使用该元素类型的 引用类型 key_type& 作为参数类型 ;
- 返回值解析 : 该函数返回 size_type 无符号整数类型 , 表示指定元素 k 的数量 ;
- 如果 set 容器中 存在该值 , 返回 1 ;
- 如果 set 容器中 不存在该值 , 返回 0 ;
2、代码示例 - set#find 函数
在下面的代码中 , 使用 count 函数来检查整数元素 3 是否存在于集合中 , 由于 std::set 集合容器可以保证元素的唯一性 ,
- 如果元素存在 , count 函数将返回 1 ;
- 如果元素不存在 , count 函数将返回 0 ;
代码示例 :
代码语言:javascript复制#include "iostream"
using namespace std;
#include "set"
int main() {
// 初始化
set<int> mySet = { 1, 2, 3, 4, 5 };
// 获取元素 3 的个数
auto count = mySet.count(3);
// 获取元素 6 的个数
auto count2 = mySet.count(6);
cout << "元素3 : " << count << endl;
cout << "元素6 : " << count2 << endl;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
元素3 : 1 元素6 : 0 请按任意键继续. . .