如果我将 const char* 传递给 std::vector<std::string> 的 Push_back,它会被复制或移动吗?

问题描述 投票:0回答:1

在这段代码(使用C++17)中,“abc”会被用来创建一个

std::string
临时对象,然后由
letters
复制到
push_back
中,还是会被移动?在这种情况下使用
push_back
还是
emplace_back
效率更高?

#include <iostream>
#include <string>
#include <vector>
 
int main()
{
    std::vector<std::string> letters;
    letters.push_back("abc");
}
c++ string vector copy move
1个回答
0
投票

vector::push_back()
具有接受右值的重载,因此临时
std::string
将被移动而不是复制。

如果您使用

vector::emplace_back()
来代替,则将完全避免临时的
std::string

© www.soinside.com 2019 - 2024. All rights reserved.