性能字符串作为函数参数



我有函数foo,它std::string作为参数:

void foo(std::string);

我放了一个连接字符串:

std::string str_1= "example_str_1";
std::string str_2 = "example_str_2";
foo(str_1+str_2);

这是将连接字符串与std::move一起使用的好方法?

foo(std::move(str_1+str_2));

放置连接与std::move有什么区别吗?

No.std::move的目的是转换为右值,但str_1+str_2已经是右值,因此move调用是多余的。

这里更大的改进空间在于foo的签名——为什么它需要按价值std::string?如果它只观察数据,这里真正的胜利将是将foo更改为void foo(std::string const&),或者使用类似于 C++17 std::string_view的东西。

没有区别,因为std::string有一个移动构造函数。

string (string&& str) noexcept;

获取 str 的内容留在
未指定但有效的 州。

裁判

最新更新