我可以在 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))
一样编码吗?
我问是因为我知道双端队列不能保证连续存储,所以我想知道它在使用涉及迭代器的函数时是否会正确运行 std::max_element
?
非常感谢!
是的,它将正常工作。在这种情况下将调用的 std::max_element
的重载是
template< class ForwardIt >
ForwardIt max_element(ForwardIt first, ForwardIt last);
对迭代器的唯一要求是
first
, last
- forward iterators defining the range to examine
所以对随机访问迭代器没有要求,只有前向迭代器。
std::max_element
的签名形式为
template<class ForwardIterator>
ForwardIterator max_element(ForwardIterator first, ForwardIterator last);
从模板类型名称我们知道它需要一个前向迭代器。根据 [container.requirements.general]-Table 96 我们知道 std::deque
使用
any iterator category that meets the forward iterator requirements
因此,因为它使用前向迭代器或更好的迭代器,所以它总是没问题的。
我可以像 std::max_element(std::begin(my_deque), std::end(my_deque))
一样编码吗?
我问是因为我知道双端队列不能保证连续存储,所以我想知道它在使用涉及迭代器的函数时是否会正确运行 std::max_element
?
非常感谢!
是的,它将正常工作。在这种情况下将调用的 std::max_element
的重载是
template< class ForwardIt >
ForwardIt max_element(ForwardIt first, ForwardIt last);
对迭代器的唯一要求是
first
,last
- forward iterators defining the range to examine
所以对随机访问迭代器没有要求,只有前向迭代器。
std::max_element
的签名形式为
template<class ForwardIterator>
ForwardIterator max_element(ForwardIterator first, ForwardIterator last);
从模板类型名称我们知道它需要一个前向迭代器。根据 [container.requirements.general]-Table 96 我们知道 std::deque
使用
any iterator category that meets the forward iterator requirements
因此,因为它使用前向迭代器或更好的迭代器,所以它总是没问题的。