为什么c ++ stl中的sort()没有对此进行排序?

问题描述 投票:-4回答:1

为什么C ++ STL sort()函数无法在此代码中对数组进行排序?是因为数组的大小还是其他原因?

#include<bits/stdc++.h>
using namespace std;

void solve()
{
    int64 a[3];
    cin >> a[0] >> a[1] >> a[2];
    sort(a, a+2);
    cout << a[0] << a[1] << a[2];
}

int main()
{
    ios::sync_with_stdio(0);cin.tie(0);
    ll_t;while(t--)
        solve();
}
c++ sorting stl
1个回答
0
投票

std::sort()正常使用时效果很好。

问题是您声明了一个three整数数组,但是只对前一个two整数排序。 std::sort()的第二个参数采用您要排序的范围的1-past-the-end迭代器。因此,要对整个数组进行排序,您需要更改以下行:

sort(a, a+2);

改为此:

sort(a, a+3);

Live Demo

为了避免这种错误,可以改用std::begin()std::begin()

std::end()

std::end()

或者更好,使用#include <iterator> sort(begin(a), end(a)); 代替:

Live Demo

std::array

© www.soinside.com 2019 - 2024. All rights reserved.