在c ++中std :: sort?

ofe*_*fey 0 c++ sorting algorithm containers vector

我想在C++中对vector使用sort算法进行排序.

strstd::vector<int>我要排序的名字.

这有什么区别:

std::sort(str.rend(),str.rbegin())
Run Code Online (Sandbox Code Playgroud)

还有这个:

std::sort(str.begin(),str.end())
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 5

假设您打算使用std::sort对字符串进行排序(因为既没有std::vectorstd::string没有sort方法),第一个语句不正确并导致未定义的行为(UB):

std::sort(str.rend(),str.rbegin());
Run Code Online (Sandbox Code Playgroud)

在这里,std::sort将尝试取消引用str.rend(),这是一个"过去的结束"迭代器.取消引用这样的迭代器是UB.

正确使用反向迭代器就可以了

std::sort(str.rbegin(),str.rend());
Run Code Online (Sandbox Code Playgroud)

这将导致字符串/向量按降序排序.