调用std :: sort

Anu*_*yan -3 c++ sorting std

sort 在C++标准库中被称为:

sort (first element, last element);
Run Code Online (Sandbox Code Playgroud)

所以,如果我有一个数组:

int a[n];
Run Code Online (Sandbox Code Playgroud)

我应该称之为sort:

sort(&a[0], &a[n-1]);
Run Code Online (Sandbox Code Playgroud)

因为a[0]是第一个元素,a[n-1]也是最后一个元素.但是,当我这样做时,它不会对最后一个元素进行排序.要获得完全排序的数组,我必须使用:

sort(&a[0], &a[n]);
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

TNA*_*TNA 6

因为stl中的范围总是被定义为从第一个元素迭代器到"一个接一个"结束的半开放范围.使用C++ 11,您可以使用:

int a[n];
sort(std::begin(a),std::end(a));
Run Code Online (Sandbox Code Playgroud)