在这段代码(使用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");
}
vector::push_back()
具有接受右值的重载,因此临时 std::string
将被移动而不是复制。
vector::emplace_back()
来代替,则将完全避免临时的 std::string
。