unordered_set用法emplace
时间: 2024-05-04 11:13:51 浏览: 21
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 emplace()
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_map.emplace
unordered_map的emplace方法用于向unordered_map中插入一个元素。它接受一个可变参数模板参数列表,用于构造键值对的键和值。如果unordered_map中已经存在相同的关键字,则插入操作会失败。
以下是一个使用emplace方法向unordered_map插入元素的示例代码:
```cpp
#include <unordered_map>
#include <iostream>
int main() {
std::unordered_map<std::string, int> my_map;
// 使用emplace方法插入元素
my_map.emplace("foo", 42);
my_map.emplace("bar", 99);
// 输出元素
std::cout << "foo: " << my_map["foo"] << std::endl;
std::cout << "bar: " << my_map["bar"] << std::endl;
return 0;
}
```
运行以上代码,输出结果为:
```
foo: 42
bar: 99
```
这段代码使用emplace方法向unordered_map中插入了两个键值对,然后通过键访问对应的值并输出。