Kap*_*pil 0 c++ sorting stl vector range
我无法理解为什么下面的代码没有排序向量的前两个元素:
int main() {
std::vector<int> v = {2,1,3,1,2};
std::sort(v.begin(),v.begin()+1);
for(auto elem:v)
{
std::cout<<elem<<std::endl;
}
// your code goes here
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗 ?
std::sort(以及所有标准库算法)期望半开范围.结束迭代器是一个过去的结束指示符(开放部分).所以[it, it + 1)只有一个元素.在你的情况下,它只是第一个向量元素.
好吧,一个元素范围已经排序.