c++ - std::vector 和 std::min 行为

标签 c++ stl

为什么下面的程序没有返回最小值为 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());

std::min

返回两个参数中较小的一个 返回 a 和 b 中的较小者。如果两者相等,则返回 a。

std::min_element

返回一个迭代器,该迭代器指向 [first,last) 范围内具有最小值的元素。第一个版本使用 operator< 或第二个版本使用 comp 进行比较;如果没有其他元素的比较小于它,则该元素是最小的(尽管它可能比较相等)。

关于c++ - std::vector 和 std::min 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340569/

相关文章:

c++ - 如何从排序 map 中获取中值

c++ - 我应该为游戏和其他实时事件使用 Standard C++ Containers and Stuff 吗?

c++ - 有没有一种在集合上调用 lambda 函数的单行方法?

c++ - STL映射简单插入内存问题

c++ - 如何使用 volatile vector ?

c++ - 对于我的std::pair特化,我应该在哪里定义运算符>>?

c++ - 使用 GL Load 时未声明 GLenum 和 GLint

c++ - 如何创建基类的单个实例

c++ - vs2010 上的 Boost Process 错误

c++ - 在基于图 block 的游戏中将碰撞处理放在哪里?