sort
в стандартной библиотеке C++ называется:Вызов станд :: сортировать
sort (first element, last element);
Так что, если у меня есть массив:
int a[n];
я должен назвать sort
как:
sort(&a[0], &a[n-1]);
с a[0]
является первым элементом и a[n-1]
последним. Однако, когда я это делаю, он не сортирует последний элемент. Чтобы получить полностью отсортированный массив, я должен использовать:
sort(&a[0], &a[n]);
Почему это?
'std :: sort' работает на итераторах [start inclusive, end exclusive). Вас спросили, почему он спроектирован так? – Mahesh
Конечные итераторы не указывают на какой-либо действительный элемент. '& a [n-1]' делает, и поэтому не используется в качестве конечного итератора. Указатель на один прошлый последний элемент массива C-стиля определенно разрешен как допустимое значение указателя (конечно, вам не разрешено разыгрывать его). –