排序矢量的一部分(到位)

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)

有什么想法吗 ?

Sto*_*ica 6

std::sort(以及所有标准库算法)期望半开范围.结束迭代器是一个过去的结束指示符(开放部分).所以[it, it + 1)只有一个元素.在你的情况下,它只是第一个向量元素.

好吧,一个元素范围已经排序.