在C ++ 11中,对于push_back()来说, emplace_back()通常是首选的(就效率而言),因为它允许就地构造, 但是在使用push_back(std::move())构造的对象? 例如, emplace_back()在像下面这样的情况下仍然是首选的? std::string mystring("hello world"); std::vector<std::string> myvector; myvector.emplace_back(mystring); myvector.push_back(std::move(mystring)); // (of course assuming we don't care about using the value of mystring after) 另外,在上面的例子中,是否有任何好处来替代: myvector.emplace_back(std::move(mystring)); 或者这里的举动完全是多余的,还是没有效果?
我第一次使用地图,我意识到有很多方法来插入一个元素。 您可以使用emplace() , operator[]或insert() ,以及使用value_type或make_pair等变体。 虽然关于所有这些问题以及关于特殊情况的问题都有很多信息,但是我仍然不能理解这个大局。 所以,我的两个问题是: 他们每个人的优点是什么? 有没有必要为标准添加emplace? 没有它之前有什么是不可能的吗?