相关疑难解决方法(0)

std :: map emplace没有复制值

C++ 11 std::map<K,V>类型具有一个emplace函数,许多其他容器也是如此.

std::map<int,std::string> m;

std::string val {"hello"};

m.emplace(1, val);
Run Code Online (Sandbox Code Playgroud)

此代码的工作方式与宣传的一样,std::pair<K,V>直接安排,但它会产生副本keyval发生.

是否可以将值类型直接置于地图中?我们能比调用中的参数更好emplace吗?


这是一个更彻底的例子:

struct Foo
{
   Foo(double d, string s) {}
   Foo(const Foo&) = delete;
   Foo(Foo&&) = delete;
}

map<int,Foo> m;
m.emplace(1, 2.3, string("hello")); // invalid
Run Code Online (Sandbox Code Playgroud)

c++ dictionary stl c++11 emplace

48
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×1

c++11 ×1

dictionary ×1

emplace ×1

stl ×1