我想知道这种反向字符串的方法安全吗?
void ReverseString( std::string & stringToReverse )
{
stringToReverse.assign( stringToReverse.rbegin(), stringToReverse.rend() );
}
最佳答案
根据§21.4.6.3/ 20,assign(first,last)
(带有迭代器first
和last
)等效于
assign(string(first,last))
因此,它首先创建一个新的字符串对象,然后进行分配。在您仍然复制时(如果您担心的话),从(反向)复制的字符串没有被修改的风险。
但是,使用其他人建议的
std::reverse(begin(str),end(str))
更好,甚至可能更有效。