4
A
回答
3
更換拉姆達對於發現的最小數目,這是有道理的使用std::min_element
。幸運的是,它帶有一個可選的比較參數,這是我們可以利用的:(sample here)
auto pos = std::min_element(std::begin(arr), std::end(arr),
[](const T &t1, const T &t2) {return t1 > 0 && (t2 <= 0 || t1 < t2);}
);
你一定要小心,要考慮到,如果它是比較積極的t1
爲負數,它應該永遠是真的。如果沒有任何元素是肯定的,這將給出數組中第一個數字的位置。如果0應視爲正數的一部分,請將t1 > 0
更改爲t1 >= 0
和t2 <= 0
至t2 < 0
。
1
我最好使用std::accumulate
與合適的操作:
auto minpos = std::accumulate(myrange.begin(), myrange.end(), MAX_VALUE,
[](T acc, T x)
{ return (x > 0 && x < acc) ? x : acc; });
這裏T
是您的元素和MAX_VALUE
的類型是該類型的最大值(例如定義爲std::numeric_limits<T>::max()
)。
0
首先使用remove_if算法將所有負數移動到集合的末尾,然後在正範圍上調用min_element。在C++ 11
auto pos = remove_if(coll.begin(), coll.end(), [](int x){ return x < 0; });
auto min = *min_element(coll.begin(), pos);
如果你不使用C++ 11只是一個預罐裝仿像從少<>
0
您可以使用std::min_element
與Boost::filter_iterator
喜歡的東西:
struct is_positive_number {
bool operator()(int x) const { return 0 < x; }
};
void foo(const std::vector<int>& numbers)
{
typedef boost::filter_iterator<is_positive_number, base_iterator> FilterIter;
is_positive_number predicate;
FilterIter filter_iter_begin(predicate, begin(numbers), end(numbers + N));
FilterIter filter_iter_end(predicate, end(numbers + N), end(numbers + N));
FilterIter it = std::min_element(filter_iter_begin, filter_iter_end);
if (it != filter_iter_end) {
// *it is the min elem
} else {
// no positive numbers.
}
}
相關問題
- 1. 如何在數組中找到最大和最小數字c
- 2. 拼圖-nXn + ve,-ve整數網格。通過它查找最佳路徑
- 3. 找到最小整數
- 4. 在數組中找到最小數字時不考慮負數
- 5. 如何在javascript中找到此函數中的最小數字
- 6. 找到最大值和最小值的C++函數
- 7. C++數組最小最小分數
- 8. 如何找到數組中最小和最大的數字?
- 9. 程序找到C中最小的三個數字
- 10. C#找到框中的最小數量/字段
- 11. 在C#上找到函數的最小值#
- 12. C++循環數組,查找最小
- 13. 在JAVA中添加,乘數和找到最小值的數字
- 14. 在javascript數組中找到最小值最大值
- 15. 在數組中尋找最小值,fortran
- 16. 在方案中尋找最小數組
- 17. 如何在C中找到數組中最大的位置C
- 18. 從C中的文件查找最大和最小浮點數
- 19. 找到bash中排序數組中數字的最小差異
- 20. 在二維數組查找C語言中最小
- 21. 找到一個數組的最小值
- 22. 找到最小值,以滿足模數
- 23. Ç遞歸函數來找到最小
- 24. 找到跳躍的最小數量
- 25. 找到最小數量的hadoop streaming python
- 26. 在PySpark找到數據的最小和最大日期在RDD
- 27. 腳本用於在數據文件中找到的最大和最小數
- 28. 如何在隨機整數數組中找到最小和最大的元素?
- 29. 如何找到陣列C#陽性最小數目
- 30. 找到權力總和最小的行數,C
HTTP://en.cppreference.com/w/cpp/algorithm ... –
答案是什麼,如果所有元素都是負? –
在我的問題中,沒有發生這種情況的機會:)但在這種情況下,我沒有提示。 – LoveMeow