unordered_map插入
时间: 2023-08-26 19:18:28 浏览: 86
unordered_map插入元素可以使用insert、emplace和赋值操作。当插入元素时,如果使用insert或emplace插入了两个key相同的元素,则insert会插入第二个元素,而emplace会拒绝插入第二个元素,只保留第一个元素。而赋值操作会直接修改已存在key对应的value,如果key不存在,则会插入新的key-value对。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++unordered_map的插入](https://blog.csdn.net/YourClerk/article/details/123967991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关问题
unordered_map 插入
unordered_map是C++ STL中的一个关联容器,其底层使用哈希表实现。unordered_map中的元素是无序的,但是可以通过键值来访问对应的值。
unordered_map中插入元素的方法为:使用insert()函数或者[]运算符。
使用insert()函数插入元素的方法为:
unorderd_map<int,string> map;
map.insert({1,"apple"});
map.insert(pair<int,string>(2,"banana"));
map.insert(make_pair(3,"orange"));
其中,{}中的内容表示一个pair对象,pair对象有两个成员,first和second。使用pair<int,string>时,first表示键值,second表示对应的值。make_pair()函数可以自动生成一个pair对象。
使用[]运算符插入元素的方法为:
unordered_map<int,string> map;
map[1] = "apple";
map[2] = "banana";
map[3] = "orange";
这种方法使用起来更加方便,直接通过中括号加键值来访问或者修改对应的值。如果键值不存在,会自动创建对应的键值对,并对应一个默认构造函数的值。
总之,unordered_map中的插入方法较为简单,可以根据具体情况选择使用insert()函数或者[]运算符,其中使用[]运算符可以更加简洁明了。
unordered_map插入新元素
要向`unordered_map`中插入新元素,你可以使用`insert`函数或使用`operator[]`运算符。
下面是使用`insert`函数插入新元素的示例:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> map;
// 使用insert函数插入新元素
map.insert(std::make_pair("apple", 10));
map.insert(std::make_pair("banana",5));
map.insert(std::make_pair("orange", 3));
// 使用insert函数插入新元素(C++11之后的初始化语法)
map.insert({"kiwi", 7});
// 使用insert函数插入新元素(C++17之后的结构化绑定语法)
auto [it, inserted] = map.insert({"pear", 8});
if (inserted) {
std::cout << "Successfully inserted: " << it->first << std::endl;
} else {
std::cout << "Failed to insert: " << it->first << std::endl;
}
return 0;
}
```
在上面的示例中,我们使用`insert`函数向`unordered_map`中插入了几个新的键值对。注意,使用`make_pair`函数可以方便地创建键值对。在C++11之后,你还可以使用初始化语法或结构化绑定语法来插入新元素。
另一种插入新元素的方法是使用`operator[]`运算符。当你使用`operator[]`访问一个键时,如果该键不存在,将会自动创建一个新元素并返回对应的值。下面是使用`operator[]`插入新元素的示例:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> map;
// 使用operator[]插入新元素
map["apple"] = 10;
map["banana"] = 5;
map["orange"] = 3;
// 使用operator[]插入新元素(C++11之后的初始化语法)
map["kiwi"] = 7;
// 使用operator[]插入新元素(C++17之后的结构化绑定语法)
auto [it, inserted] = map.emplace("pear", 8);
if (inserted) {
std::cout << "Successfully inserted: " << it->first << std::endl;
} else {
std::cout << "Failed to insert: " << it->first << std::endl;
}
return 0;
}
```
在上面的示例中,我们使用`operator[]`运算符插入了几个新的键值对。如果键已经存在,则会更新对应的值;如果键不存在,则会创建一个新元素。
无论是使用`insert`函数还是`operator[]`运算符,都可以用于向`unordered_map`中插入新元素。选择使用哪种方法取决于你的需求和编码习惯。
阅读全文