📌  相关文章
📜  在C++ STL中查找集合中的最大和最小元素(1)

📅  最后修改于: 2023-12-03 14:51:14.921000             🧑  作者: Mango

在C++ STL中查找集合中的最大和最小元素

在C++ STL中,有很多函数可以方便地查找集合中的最大和最小元素。

查找最大元素

可以使用std::max_element函数来查找集合中的最大元素。它接受两个迭代器作为参数,返回指向集合中最大元素的迭代器。

以下是一个示例程序:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
  std::vector<int> nums {1, 2, 3, 4, 5};
  auto max_num = std::max_element(nums.begin(), nums.end());
  std::cout << "The maximum element is " << *max_num << std::endl;
  return 0;
}

输出如下:

The maximum element is 5

注意,std::max_element返回的是一个迭代器,因此我们需要使用*解引用操作符来访问它所指向的元素。

查找最小元素

同样地,可以使用std::min_element函数来查找集合中的最小元素。它也接受两个迭代器作为参数,返回指向集合中最小元素的迭代器。

以下是一个示例程序:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
  std::vector<int> nums {1, 2, 3, 4, 5};
  auto min_num = std::min_element(nums.begin(), nums.end());
  std::cout << "The minimum element is " << *min_num << std::endl;
  return 0;
}

输出如下:

The minimum element is 1

同样需要使用*解引用操作符访问所指向的元素。

查找最大和最小元素

如果我们需要同时查找一个集合中的最大和最小元素,可以使用std::minmax_element函数。它也接受两个迭代器作为参数,但返回一个std::pair对象,其中first元素是指向最小元素的迭代器,second元素是指向最大元素的迭代器。

以下是一个示例程序:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
  std::vector<int> nums {1, 2, 3, 4, 5};
  auto minmax_num = std::minmax_element(nums.begin(), nums.end());
  std::cout << "The minimum element is " << *(minmax_num.first) << std::endl;
  std::cout << "The maximum element is " << *(minmax_num.second) << std::endl;
  return 0;
}

输出如下:

The minimum element is 1
The maximum element is 5

需要注意的是,我们需要使用std::pair对象的firstsecond成员来访问最小和最大元素所在的迭代器,而且需要对迭代器进行解引用操作才能获得对应的元素。