簡體   English   中英

std :: vector和std :: min行為

[英]std::vector and std::min behavior

為什么以下程序沒有將最小值返回為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作為第二個版本; 如果沒有其他元素比它小,那么元素是最小的(盡管它可能比較相等)。

請注意, std::vector<T>::end()不會為最后一個元素提供迭代器。 它返回一個指向BEHIND最后一個元素的迭代器。
如果要使用迭代器邏輯尋址第一個和最后一個元素,則需要使用(test.begin(), test.end()-1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM