这段代码是关于数组排序的:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int arr[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n);
cout << "\nArray after sorting using "
"default sort is : \n";
//Here I started printing the array
for (int i = 0; i < n; ++i)
cout << arr[i] << " ";
return 0;
}
字符串
我无法理解这句话:
sort(arr, arr + n);
型arr+n
如何在此处指定结束位置?
3条答案
按热度按时间aelbi1ox1#
对于数组,数组名arr表示指向数组第一个元素的迭代器,+n将使该迭代器递增n个元素。在你的例子中,排序算法应该采用开始迭代器和指向最后一个元素后一个元素的迭代器。
arr:开始迭代器arr+n:结束迭代器(最后一个元素后一个)
通常,算法不计算其范围内的结束迭代器,所以它是这样的。
anauzrmj2#
标准库的约定是,范围必须作为指向第一个元素的迭代器和指向最后一个元素之后的迭代器提供。
所以你的序列有10个元素
字符串
所以
arr[0]
指向第一个元素,arr[10]
指向最后一个元素之后的一个元素。kfgdxczn3#
代码段排序(arr,arr + n);是C中sort()函数的调用,用于对数组进行排序。在数组中,数组的元素个数是一个整数,而数组的元素个数是一个整数。sort()函数是C标准模板库(STL)的一部分,默认情况下用于按升序对元素进行排序。
下面是函数调用的分解:
数组的第一个元素的指针。在C中,当您将数组传递给函式时,它会衰减为指向其第一个元素的指标,所以在大多数情况下,您可以将数组视为指标。
arr + n:这是指向数组最后一个元素后一个元素的指针。它有助于定义应排序的元素范围。sort()函数使用一个半开范围,其中第一个迭代器是包含的,最后一个迭代器是独占的。在本例中,arr + n指向数组最后一个元素之后的位置。
sort():这是C标准模板库(STL)中的函数,用于对指定范围内的元素进行排序。
排序函数将对arr指向的数组中的元素进行重新排序,根据它们的值按升序排列它们。在函数调用之后,数组将按排序顺序包含其元素。
下面是一个如何使用sort()函数的示例: