簡體   English   中英

我可以在c ++ 11中的std :: deque上使用std :: max_element()嗎?

[英]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);

對迭代器的唯一要求是

firstlast - 轉發定義要檢查的范圍的迭代器

因此不需要隨機訪問迭代器,只需要轉發迭代器。

暫無
暫無

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

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