gpt4 book ai didi

c++ - string::swap 是否因为 std::swap(s1, s2) 就足够了而被忽略?

转载 作者:搜寻专家 更新时间:2023-10-31 01:43:51 35 4
gpt4 key购买 nike

std::string 有一个成员函数 swap,这是交换两个大字符串的有效方法。

既然我们有了 move 语义,那么,给定两个大字符串 s1s2,以下代码

s1.swap(s2);

在效率方面应该与下面的代码相同:

std::swap(s1, s2);

string::swap 可以忽略吗?

最佳答案

Is string::swap ignorable?

如果您愿意,您可以选择忽略它,并始终调用非成员(member)swap;效果将与调用 string::swap 相同,因为 basic_stringswap 特化是根据成员函数描述的。

§21.4.8.8 [string.special]

  template<class charT, class traits, class Allocator> void
swap(basic_string<charT,traits,Allocator>& lhs,
basic_string<charT,traits,Allocator>& rhs);

1 Effects: Equivalent to lhs.swap(rhs);

我个人的意见是根据具体情况评估选项,并使用似乎更适合特定场合的选项。

关于c++ - string::swap 是否因为 std::swap(s1, s2) 就足够了而被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24435161/

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