gpt4 book ai didi

c++ - 将 make_shared 与 emplace_back 和 push_back 一起使用 - 有什么区别吗?

转载 作者:行者123 更新时间:2023-12-02 02:25:10 26 4
gpt4 key购买 nike

some_vector.push_back(make_shared<ClassName>());
some_vector.emplace_back(make_shared<ClassName>());

我想检查一下我的理解是否正确,对于 make_shared 和一般来说对于返回对象的所有其他函数,这两个调用是相同的。这里make_shared会创建一个新的shared_ptr,然后这个指针会在push_backemplace_back中被移动到容器中>。这是正确的,还是会有一些不同?

最佳答案

vector<T>::push_back有一个 T&&过载,与 vector<T>::emplace_back 相同T&&版本。

区别在于emplace_back将完美转发任何一组参数到 T的构造函数,而 push_back只需要 T&&T const& .当你实际通过 T&&T const&他们行为的标准规范是一样的。

关于c++ - 将 make_shared 与 emplace_back 和 push_back 一起使用 - 有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65789385/

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