Функция std :: sort () не может отсортировать часть вектора - PullRequest
0 голосов
/ 29 октября 2018

Функция 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 голосов
/ 29 октября 2018

Второй параметр (last) указывает на один последний элемент, который должен быть отсортирован. Поэтому, когда итераторы, которые вы передаете для сортировки,

3 -1 4 2 -1 
     ^-------- first
       ^------ last

Тогда есть только один элемент в диапазоне, который нужно отсортировать, и вы получите ожидаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...