📜  C++ STL中的unordered_set insert()函数(1)

📅  最后修改于: 2023-12-03 14:59:47.048000             🧑  作者: Mango

C++ STL中的unordered_set insert()函数

unordered_set是C++ STL中的一种容器,它提供了一种快速的查找数据的方式。完成插入操作是unordered_set的一个基本功能,insert()函数便是完成这个任务的主要函数。在本篇文章中,我们将详细介绍unordered_set insert()函数的使用方法。

函数原型

在深入了解insert()函数的详细用法之前,我们先来看一下它的函数原型:

std::pair<std::unordered_set<T>::iterator, bool> insert(const T& value);

通过这个原型可以看出,insert()函数的返回值类型为pair类型,其中包含unordered_set中插入元素的迭代器(iterator)和插入状态(bool)。在继续了解insert()函数的用法之前,我们需要回顾一下pair类型的基本知识。

pair类型

C++ STL中的pair是一个模板类型,它可以将两个不同类型的变量组合成一个对象。pair类型的定义方式如下:

template<class T1, class T2> struct pair;

在map和unordered_map两种容器中,pair类型常用于键值对的定义,如:

std::map<std::string, int> myMap;
myMap.insert(std::pair<std::string, int>("one", 1));

在unordered_set容器中,pair类型就用于描述insert()函数的返回值。

使用方法

回到unordered_set的insert()函数上来,它的作用是在unordered_set中插入一个值。如果插入成功,则返回一个包含迭代器和插入状态的pair类型对象,其中迭代器指向新插入的元素,插入状态为true;如果插入失败,则返回一个包含迭代器和插入状态的pair类型对象,其中迭代器指向原先已存在的元素,插入状态为false。

insert()函数的使用方法如下:

std::unordered_set<int> mySet;
std::pair<std::unordered_set<int>::iterator, bool> result;
result = mySet.insert(1);
if (result.second == true) {
    std::cout << "Insert succeeded\n";
    std::cout << "The new element is " << *result.first << "\n";
}
else {
    std::cout << "Insert failed\n";
    std::cout << "The existing element is " << *result.first << "\n";
}

上面的代码创建了一个空的unordered_set mySet,并调用insert()函数来插入值1。如果插入成功,则打印相关信息,否则也打印相关信息。

除了用一个值直接插入以外,insert()函数还支持使用迭代器区间插入,如下所示:

std::unordered_set<int> mySet1;
std::vector<int> myVector = { 1, 2, 3, 4, 5 };
mySet1.insert(myVector.begin(), myVector.end());

这段代码创建了一个unordered_set mySet1,并将容器vector myVector中的所有元素插入mySet1。需要注意的是,vector中的元素类型必须与mySet1中的元素类型一致。

总结

unordered_set的insert()函数是一个基本功能函数,它能够实现在unordered_set容器中插入元素的功能。通过返回一个pair类型对象,可以轻松地获取插入元素的相关信息。在实际开发中,我们可以根据自己的需求使用insert()函数来插入单个元素或迭代器区间的元素。