我想知道这种反向字符串的方法安全吗?

void ReverseString( std::string & stringToReverse )
{
    stringToReverse.assign( stringToReverse.rbegin(), stringToReverse.rend() );
}

最佳答案

根据§21.4.6.3/ 20,assign(first,last)(带有迭代器firstlast)等效于

assign(string(first,last))

因此,它首先创建一个新的字符串对象,然后进行分配。在您仍然复制时(如果您担心的话),从(反向)复制的字符串没有被修改的风险。

但是,使用其他人建议的std::reverse(begin(str),end(str))更好,甚至可能更有效。

08-27 10:17