292得票6回答
C++ Map中的Insert、Emplace和Operator[]有何区别?

我第一次使用地图功能,发现有多种方法可以插入元素。您可以使用 emplace(), operator[] 或者 insert(),还有其他变体,例如使用 value_type 或者 make_pair。虽然关于它们的所有信息以及特定情况下的问题都有很多资料,但我仍然无法理解整个大局。 因此,我...

110得票2回答
C++11中使用std::move的push_back()与emplace_back()对于已构造对象的效率比较。

在C++11中,emplace_back()通常比push_back()更受欢迎(就效率而言),因为它允许原地构造。但是,当使用已经构造的对象时,如果使用push_back(std::move()),是否仍然如此? 例如,在以下情况下,emplace_back()是否仍然优先考虑? std...

68得票2回答
std::map中不复制值的emplace

C++11中的std::map<K,V>类型有一个emplace函数,许多其他容器也有这个函数。std::map<int,std::string> m; std::string val {"hello"}; m.emplace(1, val); 这段代码的效果与广告...

57得票2回答
在C++中,unordered_map::emplace和unordered_map::insert有什么区别?

在C++中,std::unordered_map::emplace和std::unordered_map::insert有什么区别?

48得票2回答
为什么emplace_back比push_back更快?

当我这样做时,我认为emplace_back应该是最佳选择:v.push_back(myClass(arg1, arg2)); 因为emplace_back会立即在向量中构造对象,而push_back会先构造一个匿名对象,然后将其复制到向量中。更多信息请参见此问题。 Google还提供了这个...

31得票1回答
为什么在使用非可复制对象的单参数构造函数时,需要在map::emplace中使用piecewise_construct?

以下代码在gcc 4.8.2上无法编译。问题在于这段代码将尝试复制构造一个std::pair<int, A>,由于struct A缺少复制和移动构造函数,因此无法完成复制构造。是gcc的问题还是我漏了什么? #include <map> struct A { in...

31得票1回答
<queue>的emplace和push的区别

&lt;queue&gt; 的 emplace 和 push 有什么区别? 关于 std::queue::emplace 和 std::queue::push,这里有一些解释。 两种方法都在当前队列末尾添加元素,并返回 None。

28得票3回答
使用初始化列表定位向量的位置

我有一个std::vector&lt;std::vector&lt;double&gt;&gt;,想要在其末尾添加一些元素,这是我的尝试:std::vector&lt;std::vector&lt;double&gt; &gt; vec; vec.emplace_back({0,0}); 但是...

27得票4回答
在没有复制构造函数的情况下向向量中插入具有对象的操作

我有一个类,它的复制构造函数被明确删除(因为 A 类在内部使用指针,我不想掉入浅拷贝陷阱):class A { public: A(const A&amp;) = delete; A&amp; operator=(const A&amp;) = delete; A...

25得票5回答
如何使用std::vector::emplace_back和vector<vector<int>>?

vector&lt;vector&lt;int&gt; &gt; res; res.emplace_back({1,2}); // change to res.push_back({1,2}); would work 这给了我一个错误main.cpp:61:25: error: no ...