为什么下面的程序没有返回最小值为 1。
#include <vector>
#include <algorithm>
#include <iostream>
int main ( int argc, char **argv) {
std::vector<int> test;
test.push_back(INT_MAX);
test.push_back(1);
int min = *(std::min(test.begin(), test.end()));
std::cout << "Minimum = " << min << std::endl;
}
它返回 minimum
值作为 2147483647
最佳答案
你可以试试这个:
int min = *std::min_element(test.begin(), test.end());
返回两个参数中较小的一个 返回 a 和 b 中的较小者。如果两者相等,则返回 a。
返回一个迭代器,该迭代器指向 [first,last) 范围内具有最小值的元素。第一个版本使用 operator< 或第二个版本使用 comp 进行比较;如果没有其他元素的比较小于它,则该元素是最小的(尽管它可能比较相等)。
关于c++ - std::vector 和 std::min 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340569/