[英]Can I use std::max_element() on std::deque in c++11?
我可以編寫像std::max_element(std::begin(my_deque), std::end(my_deque))
嗎?
我問,因為我知道deque不能保證連續存儲,所以我想知道當使用涉及像std::max_element
這樣的迭代器的函數時它是否會正常運行?
非常感謝你!
std::max_element
有一個簽名形式
template<class ForwardIterator>
ForwardIterator max_element(ForwardIterator first, ForwardIterator last);
從模板類型名稱我們知道它需要一個前向迭代器。 Per [container.requirements.general] -Table 96我們知道std::deque
使用
任何滿足前向迭代器要求的迭代器類別
因此,因為它使用前向迭代器或更好,所以它總是可以的。
是的,它會正常工作。 在這種情況下將調用的std::max_element
的重載是
template< class ForwardIt >
ForwardIt max_element(ForwardIt first, ForwardIt last);
對迭代器的唯一要求是
first
,last
- 轉發定義要檢查的范圍的迭代器
因此不需要隨機訪問迭代器,只需要轉發迭代器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.