为什么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();
}
std::sort()
正常使用时效果很好。
问题是您声明了一个three整数数组,但是只对前一个two整数排序。 std::sort()
的第二个参数采用您要排序的范围的1-past-the-end迭代器。因此,要对整个数组进行排序,您需要更改以下行:
sort(a, a+2);
改为此:
sort(a, a+3);
为了避免这种错误,可以改用std::begin()
和std::begin()
:
std::end()
std::end()
或者更好,使用#include <iterator>
sort(begin(a), end(a));
代替:
Live Demo