[英]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());
返回兩個參數中較小的一個返回a和b中較小的一個。 如果兩者都是等價的,則返回a。
返回指向范圍[first,last]中具有最小值的元素的迭代器。 比較是使用operator <作為第一個版本,或comp作為第二個版本; 如果沒有其他元素比它小,那么元素是最小的(盡管它可能比較相等)。
請注意, std::vector<T>::end()
不會為最后一個元素提供迭代器。 它返回一個指向BEHIND最后一個元素的迭代器。
如果要使用迭代器邏輯尋址第一個和最后一個元素,則需要使用(test.begin(), test.end()-1)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.