gpt4 book ai didi

c++ - 什么是 multimap::emplace() 和 move()?

转载 作者:可可西里 更新时间:2023-11-01 15:07:03 27 4
gpt4 key购买 nike

我正在查看有关 multimap 的 MSDN 文档,发现它有一个成员函数 multimap::emplace()。下面是该成员函数的示例。

int main( ) {
using namespace std;
multimap<int, string> m1;
pair<int, string> is1(1, "a");

m1.emplace(move(is1));
}

看来 emplace()move() 是 C++0x。有人可以为我解释一下吗?我阅读了有关 move() 的内容,但我真的不明白它的作用(在幕后)。

最佳答案

使用 vector 更容易理解 Eplacing。 my_vector.emplace_back(1, 2, 3) 基本上是 my_vector.push_back(some_type(1, 2, 3)) 的高效快捷方式。 any 构造函数现在可以用于就地构造,而不是就地复制构造对象,从而节省临时对象的创建、复制(或移动)和销毁。安放由完美转发提供支持。

std::move(expression) 基本上是对 xvalue 的转换,这有效地允许将整个表达式绑定(bind)到右值引用。您通常这样做是为了从您不再感兴趣的命名对象中窃取资源,因为无论如何它们很快就会被销毁。

关于c++ - 什么是 multimap::emplace() 和 move()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5469511/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com