📅  最后修改于: 2023-12-03 14:56:19.037000             🧑  作者: Mango
在处理数组时,有时需要查找元素中第三大的元素。本文将介绍一种用于不同元素数组中第三大元素的 C++ 程序。
我们可以使用 STL 中的 set
容器实现此功能。set
容器是一个具有自动排序和去重功能的容器,可以通过 set
中元素的下标来访问指定元素。
通过遍历给定的数组,我们将数组中所有元素添加到 set
中。由于 set
可以自动去重,因此在添加元素时重复的元素将被忽略。
由于我们只需要第三大的元素,我们可以从 set
中访问第三个元素的下标来获取所需元素。
下面是该 C++ 程序的代码实现:
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
int arr[] = { 10, 20, 30, 40, 50 };
int n = sizeof(arr) / sizeof(arr[0]);
// 添加所有数组元素到 set
for (int i = 0; i < n; i++) {
s.insert(arr[i]);
}
// 访问第三大的元素
int thirdLargestElement;
if (s.size() >= 3) {
set<int>::iterator it = s.begin();
advance(it, s.size() - 3); // 使用 advance 函数移动 set 迭代器
thirdLargestElement = *it;
}
// 输出结果
cout << "Third largest element is: " << thirdLargestElement << endl;
return 0;
}
首先,我们包含两个头文件 iostream
和 set
。iostream
实现了基本的输入/输出设施,而 set
是实现该程序的容器。
接下来,我们声明了一个 std
命名空间,以免繁琐地输入 std::
。
然后,我们创建了一个 set<int>
类型的变量 s,该变量将用于存储我们的数组中的元素。
接着,我们创建一个整型数组 arr,其中包含了一些随机的元素。我们还定义了一个整型变量 n,并将其设置为数组 arr
的大小。
然后,我们使用 for
循环遍历整个数组,并将每个元素插入到 set
中。
接着,我们通过设置一个整型变量thirdLargestElement
,来访问set
中第三大的元素。我们使用if
条件语句来检查set
中是否至少有三个元素。如果是的话,我们将使用set::iterator
指针it
来访问set
的末尾,并将指针移到倒数第三个元素。最后,我们将该元素赋给thirdLargestElement
。
最后,我们输出基于thirdLargestElement
的结果。如果您需要,您可以将此代码改为将第三大的元素存储在一个数组中以便后续使用。
set
容器提供了很多有用的功能,包括去除数组中的重复项,并按顺序存储元素。通过使用 STL 中的 set
容器,我们可以轻松快速地找到数组中第三大的元素,并大大减少了编写此功能所需的代码量。