Joh*_*ohy 1 c++ vector make-shared c++11 c++17
some_vector.push_back(make_shared<ClassName>());
some_vector.emplace_back(make_shared<ClassName>());
Run Code Online (Sandbox Code Playgroud)
我想检查一下我的理解是否正确,对于make_shared
返回对象的所有其他函数,这两个调用是相同的。这里make_shared
将创建一个新的shared_ptr
,然后这个指针都将在被转移到容器中push_back
和emplace_back
。这是正确的,还是会有一些区别?
vector<T>::push_back
有一个T&&
重载,它的作用与vector<T>::emplace_back
T&&
版本相同。
不同之处在于,emplace_back
它将完美地将任何参数集转发给T
的构造函数,而push_back
只需要T&&
或T const&
。当您实际通过一个T&&
或T const&
标准规范时,它们的行为是相同的。