我想在 C++ 中对vector
使用算法进行排序。sort
str
是std::vector<int>
我要排序的名称。
这有什么区别:
std::sort(str.rend(),str.rbegin())
还有这个:
std::sort(str.begin(),str.end())
我想在 C++ 中对vector
使用算法进行排序。sort
str
是std::vector<int>
我要排序的名称。
这有什么区别:
std::sort(str.rend(),str.rbegin())
还有这个:
std::sort(str.begin(),str.end())
假设您打算使用std::sort
对字符串进行排序(因为既没有方法std::vector
也没有std::string
方法sort
),则第一个语句不正确并导致未定义的行为(UB):
std::sort(str.rend(),str.rbegin());
在这里,std::sort
将尝试取消引用str.rend()
,这是一个“结束”迭代器。取消引用这样的迭代器是 UB。
正确使用反向迭代器是
std::sort(str.rbegin(),str.rend());
这将导致字符串/向量按降序排序。
许多容器和其他东西(如 )上的标准库中的迭代器std::string
有多种以(等)reverse
开头。这些将以相反的顺序迭代。使用 just and将从头到尾以正确的格式对字符串进行排序。r
rbegin()
rend
begin
end
尽量避免使用反向迭代器,只使用常规的begin()
和end()
你的字符串:
std::string str = "bacd";
std::sort( str.begin(),str.end() );
std::cout << str << std::endl; // should produce "abcd" on your output, without quotes
编辑:
所以......你想vector<int>
被排序吗?如果是这样,请执行与上述相同的操作,除了使用std::sort
您的.begin()
end()
std::vector<int>