std :: sort()函数无法对向量的一部分进行排序

时间:2018-10-29 16:36:00

标签: c++ sorting vector

std::sort函数无法以某种方式对向量的特定部分进行排序。输入向量中要排序的部分的上限和下限,以及向量和向量元素的大小作为输入。这是我尝试过的:

#include<iostream>
#include <vector>
#include<algorithm>
using namespace std;

int main()
{
    long long int N,L,R;
    cin>>N;
    vector <long long int> V;
    while(N--)
    {
        long long int input;
        cin>>input;
        V.push_back(input);
    }
        cin>>L>>R;
        sort(V.begin()+L-1,V.begin()+R-1);
        vector<long long int>::iterator I = V.begin();
        while(I<V.end())
        {
            cout << *I << " ";
            I++;
        }
        cout << endl;
}

My input:
5      
3 -1 4 2 -1
3 4

Expected output:
3 -1 2 4 -1

Actual output:
3 -1 4 2 -1 (unchanged)

请告诉您此方法的错误之处/可以应用的其他方法。

1 个答案:

答案 0 :(得分:3)

第二个参数('?')指向最后一个应该排序的元素。因此,当您传递进行排序的迭代器时,

last

那么范围内只有一个要排序的元素,并且期望得到的输出。