C++ unordered_set的insert
在C++标准库中,unordered_set
是一种容器,用于存储唯一的元素集合。与set
不同的是,unordered_set
使用哈希表来存储元素,因此其插入、查找和删除操作的时间复杂度均为O(1)(平均情况下),而set
则为O(logN)。
本文将详细介绍unordered_set
的insert
操作,包括如何使用insert
插入元素、插入重复元素的处理、以及示例代码和运行结果。
1. 插入元素
在unordered_set
中插入元素可以使用成员函数insert
。insert
函数接受一个参数,即要插入的元素,如果插入成功则返回一个pair
,其中first
是一个iterator
指向新插入元素的位置,second
为bool
值,表示插入是否成功(true
表示成功,false
表示元素已存在)。
以下是使用insert
插入元素的示例代码:
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> my_set;
// 插入元素
auto result = my_set.insert(5);
if(result.second) {
std::cout << "Insert success!" << std::endl;
} else {
std::cout << "Element already exists!" << std::endl;
}
return 0;
}
运行结果如下:
Insert success!
2. 插入重复元素处理
如果插入的元素已经存在于unordered_set
中,insert
操作仍会尝试插入该元素,但会返回一个指向已存在元素的iterator
和false
的bool
值。
以下是插入重复元素的示例代码:
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> my_set = {1, 2, 3, 4};
// 插入已存在元素
auto result = my_set.insert(3);
if(result.second) {
std::cout << "Insert success!" << std::endl;
} else {
std::cout << "Element already exists!" << std::endl;
}
return 0;
}
运行结果如下:
Element already exists!
总结
通过本文的介绍,我们了解了在C++中如何使用unordered_set
的insert
操作插入元素,并且掌握了插入重复元素的处理方法。insert
操作是unordered_set
中非常常用的功能之一,能够帮助我们高效地管理唯一的元素集合。在实际应用中,我们可以根据需要灵活运用insert
操作,来满足不同场景下的需求。