C++ 代码逐行解释:排序、去重与数组操作
C++ 代码逐行解释:排序、去重与数组操作
本文将逐行解释以下 C++ 代码片段,该代码演示了如何读取一组整数、对它们进行排序和去重,并根据结果执行不同的计算。c++#include
int n;int a[300005];
int main(){ cin >> n; for(int i = 1;i <= n;i ++) cin >> a[i]; sort(a + 1,a + 1 + n); n = unique(a + 1,a + 1 + n) - a - 1; a[0] = 0; if(n <= 1) printf('-1 '); else printf('%d ',max(a[n - 2],a[n] % a[n - 1])); return 0;}
代码功能:
这段代码读取一组整数,对其进行排序并删除重复项。 然后,它根据唯一整数的数量执行不同的计算。
逐行解释:
#include <cstdio>: 包含用于输入输出的标准 C 库函数,例如printf和scanf。2.#include <iostream>: 包含用于输入输出的标准 C++ 库函数,例如cin和cout。3.#include <algorithm>: 包含各种算法,包括用于排序的sort函数和用于去重的unique函数。4.#include <cstring>: 包含用于处理 C 风格字符串的函数,尽管在本代码中没有直接使用。5.using namespace std;: 声明使用标准命名空间,避免在使用标准库函数时需要写std::前缀。6.typedef long long LL;: 为long long数据类型创建一个别名LL,方便后续使用。7.int n;: 声明一个整数变量n,用于存储输入的整数数量。8.int a[300005];: 声明一个整数数组a,最多可以存储 300005 个整数。9.int main(){: 主函数,程序执行的入口点。10.cin >> n;: 从标准输入读取一个整数并将其存储在变量n中。11.for(int i = 1;i <= n;i ++) cin >> a[i];: 循环读取n个整数,并将它们存储在数组a中,从索引 1 开始。12.sort(a + 1,a + 1 + n);: 使用sort函数对数组a中从索引 1 到n的元素进行排序。13.n = unique(a + 1,a + 1 + n) - a - 1;: 使用unique函数去除数组a中从索引 1 到n的重复元素,并将n更新为去重后数组的长度。unique函数返回指向去重后数组最后一个元素的下一个位置的指针,减去数组a的起始地址再减 1 即为去重后的数组长度。14.a[0] = 0;: 将数组a的第一个元素(索引 0)设置为 0。 15.if(n <= 1) printf('-1 ');: 如果去重后的数组长度n小于等于 1,则打印 -1。16.else printf('%d ',max(a[n - 2],a[n] % a[n - 1]));: 否则,打印去重后数组中倒数第二个元素a[n - 2]和最后一个元素对倒数第二个元素取模的结果a[n] % a[n - 1]中的较大值。17.return 0;: 返回 0,表示程序成功执行。18.}: 主函数结束。
总结:
这段代码展示了 C++ 中一些常见的数组操作,包括排序、去重和根据数组内容进行不同的计算。 理解这段代码可以帮助你更好地掌握 C++ 数组和算法的使用
原文地址: https://www.cveoy.top/t/topic/NYA 著作权归作者所有。请勿转载和采集!