上述实例代码可以看到:insert_or_assign方法与 try_emplace的不同之处在于,如果对应的key已经存在,使用insert_or_assign会将新的value值赋值给已经存在的key(建立新的键值对映射)。
std::map<Key,T,Compare,Allocator>::insert_or_assign template<classM> std::pair<iterator,bool>insert_or_assign(constKey&k, M&&obj); (1)(since C++17) template<classM> std::pair<iterator,bool>insert_or_assign(Key&&k, M&&obj);
我使用的是c++17 https://en.cppreference.com/w/cpp/container/map/insert_or_assign的insert_or_assign,这说明映射值是使用右值引用构造的下面是我的自定义类,我将其用作键。接下来是值,我将其用作向量。当我尝试使用统一初始化时,我得到了编译错误。而且,如果我使用std::pair,我仍然会 ...
insert_or_assignreturns more information thanoperator[]and does not require default-constructibility of the mapped type. Feature-testmacroValueStdFeature __cpp_lib_unordered_map_try_emplace201411L(C++17)std::unordered_map::try_emplace, std::unordered_map::insert_or_assign ...
参阅 emplace 原位构造元素 (公开成员函数) emplace_hint 使用提示原位构造元素 (公开成员函数) insert_or_assign (C++17) 插入元素,或若键已存在则赋值给当前元素 (公开成员函数) inserter 创建拥有从实参推出的类型的std::insert_iterator (函数模板)
(C++11) 原位构造元素 (公开成员函数) emplace_hint (C++11) 使用提示原位构造元素 (公开成员函数) insert_or_assign (C++17) 插入元素,或若键已存在则赋值给当前元素 (公开成员函数) inserter 创建拥有从实参推出的类型的std::insert_iterator (函数模板)...
我个人倒觉得这个选择很简单:因为标准库的容器的成员函数要保持一致性。 insert 都是单参数的,所以为了...
// insert_iterator_op_assign.cpp// compile with: /EHsc#include<iterator>#include<list>#include<iostream>intmain( ){usingnamespacestd;inti;list<int>::iterator L_Iter;list<int> L;for(i =0; i <4; ++i ) { L.push_back (2* i ); }cout<<"The original list L is:\n ( ";for( ...
// insert_iterator_op_assign.cpp// compile with: /EHsc#include<iterator>#include<list>#include<iostream>intmain( ){usingnamespacestd;inti;list<int>::iterator L_Iter;list<int> L;for(i =0; i <4; ++i ) { L.push_back (2* i ); }cout<<"The original list L is:\n ( ";for( ...
// insert_iterator_op_assign.cpp// compile with: /EHsc#include<iterator>#include<list>#include<iostream>intmain( ){usingnamespacestd;inti;list<int>::iterator L_Iter;list<int> L;for(i =0; i <4; ++i ) { L.push_back (2* i ); }cout<<"The original list L is:\n ( ";for( ...