unordered_set emplace()
时间: 2023-11-02 15:03:00 浏览: 100
unordered_set的emplace()函数用于在unordered_set中插入新元素。该函数会在unordered_set中找到合适的位置,并将新元素直接构造在该位置上,从而避免了额外的拷贝或移动操作。该函数的返回值是一个pair对象,其中第一个元素是一个迭代器,指向插入的元素(如果插入成功),或者指向已存在的元素(如果插入失败);第二个元素是一个bool值,表示插入是否成功。
以下是emplace()函数的示例用法:
```cpp
unordered_set<int> mySet;
// 插入新元素 1
auto result1 = mySet.emplace(1);
// 插入新元素 2,并检查是否插入成功
auto result2 = mySet.emplace(2);
if (result2.second) {
cout << "插入成功!" << endl;
} else {
cout << "插入失败,元素已存在!" << endl;
}
```
相关问题
unordered_set用法emplace
unordered_set是C++标准库中的一个容器,它提供了一种无序的、不重复的元素集合。emplace函数是unordered_set中的一个成员函数,用于在集合中插入新元素。
emplace函数的作用是在unordered_set中就地构造一个新元素,并将其插入到集合中。与insert函数不同的是,emplace函数可以直接使用元素的构造函数参数来构造新元素,而不需要先创建一个临时对象。
下面是emplace函数的用法示例:
```cpp
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> mySet;
// 使用emplace函数插入新元素
mySet.emplace(1);
mySet.emplace(2);
mySet.emplace(3);
// 输出集合中的元素
for (const auto& element : mySet) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:1 2 3
在上述示例中,我们使用emplace函数分别插入了三个整数元素到unordered_set中。由于emplace函数可以直接使用构造函数参数来构造新元素,因此我们可以直接传入整数值作为参数,而不需要先创建一个临时对象。
输出unordered_set
unordered_set 是一种无序容器,与 unordered_map 类似。unordered_set 容器可以用来存储不重复的元素,并且可以高效地进行插入、删除和查找操作。在创建 unordered_set 容器时,可以通过初始化列表完成容器的初始化操作。例如,可以使用以下代码创建一个包含多个字符串的 unordered_set 容器:
std::unordered_set<std::string> uset{ "http://c.biancheng.net/c/", "http://c.biancheng.net/java/", "http://c.biancheng.net/linux/" };
然后,可以使用迭代器遍历输出 unordered_set 容器中的所有元素。以下是一个示例程序:
#include <iostream>
#include <string>
#include <unordered_set>
int main() {
std::unordered_set<std::string> uset;
uset.emplace("http://c.biancheng.net/java/");
uset.emplace("http://c.biancheng.net/c/");
uset.emplace("http://c.biancheng.net/python/");
uset.emplace("http://c.biancheng.net/c/");
std::cout << "uset size = " << uset.size() << std::endl;
for (auto iter = uset.begin(); iter != uset.end(); ++iter) {
std::cout << *iter << std::endl;
}
return 0;
}
以上代码将输出 unordered_set 容器中的所有元素,并且输出容器的大小。
阅读全文