繁体   English   中英

在 Sort(arr,arr +n ) 线上,arr+n 如何在这里指定 end position?

[英]on the line Sort(arr,arr +n ) , how arr+n specifies end position here?

这段代码是关于对数组进行排序的

#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]);
 

这里我们取两个参数,数组的开头和我们希望数组被排序的长度 n

//我无法理解这一行arr+n 如何在这里指定 end position?

 **sort(arr, arr + n);**  

.

    cout << "\nArray after sorting using "
            "default sort is : \n"; 

//这里我开始打印数组

    for (int i = 0; i < n; ++i)
        cout << arr[i] << " ";
 
    return 0;
}

对于 arrays,数组名 arr 表示迭代器指向数组的第一个元素,+n 将使迭代器增加 n 个元素。 在您的情况下,排序算法应该采用开始迭代器和指向最后一个元素之外的迭代器。

arr:开始迭代器 arr+n:结束迭代器(最后一个元素之后的一个)

通常,算法不会在其范围内计算结束迭代器,所以它是这样的。

标准库的约定是范围必须作为指向第一个元素的迭代器和指向最后一个元素的迭代器提供。

所以你的序列有 10 个元素

 array = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };
 index =>  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 

所以arr[0]指向第一个元素,而arr[10]指向最后一个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM