STL提供了便捷的函数,可直接获取数组中的最大值与最小值,下文将具体介绍其用法。
1、 在Visual Studio 2013中新建一个基于Boost.Test的控制台应用程序项目,具体设置所示。
2、 在BoostTest.cpp文件中输入如下代码:
3、 /*
4、 利用STL算法获取数组中的最大值与最小值
5、 */
6、 {
7、 定义数组
8、 可使用标准库函数 `std::max_element` 获取容器中最大元素的迭代器,例如:`auto max = std::max_element(arr.begin(), arr.end());`。该函数返回指向最大值位置的迭代器,适用于 `vector` 等支持随机访问的序列容器。
9、 程序输出数组中的最大值及其在数组中的索引位置,格式为:数组最大值是:X,位置是Y,其中X代表找到的最大元素值,Y表示该元素从数组起始位置开始计算的偏移量(即下标)。
10、 输出值必含星号,*max 表示对 max 进行解引用操作。
11、 数组中的最小值为:`*min`,其在数组中的索引位置为`std::distance(std::begin(arr), min)`。该语句通过标准输出流将最小值及其对应下标一并打印到控制台,便于直观查看结果。
12、 }
13、 {
14、 }
15、 程序编译运行后,结果所示。
16、 若数组中存在两个相同的最大值或最小值,程序将如何输出?我们通过将数组a修改为新值来测试这一情况。
17、 程序输出结果为首个最大值与最小值。
18、 运行结果所示
