我可以在 c++11 中的 std::d eque 上使用 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);
从模板类型名称中我们知道它需要一个前向迭代器。 根据 [container.requirements.general]-表 96,我们知道std::deque
使用
满足前向迭代器要求的任何迭代器类别
因此,由于它使用前向迭代器或更好的迭代器,因此它总是可以的。
是的,它会正常工作。在这种情况下将调用的std::max_element
重载为
template< class ForwardIt >
ForwardIt max_element(ForwardIt first, ForwardIt last);
对迭代器的唯一要求是
first
,last
- 定义要检查的范围的前向迭代器
所以对随机访问迭代器没有要求,只需要前向迭代器。
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::向量与传递值的动态数组
- 使用std::vector的OpenCL矩阵乘法
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- std::condition_variable::wait()如何评估给定的谓词
- 如何获取std::result_of函数的返回类型
- std::原子加载和存储都需要吗
- 将对象移动到std::shared_ptr
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 使用一个考虑到std::map中键值的滚动或换行的键
- 迭代器在std::unordered_map<int,std::vector<Element>>
- 是否可以在C++中使用命名变量(例如,键和值)而不是 .first 和 .second 进行 std::map<> "for element : container" 迭代?
- 有一个指向std::vector-element的指针,该指针目前还不存在,但稍后将被构造,这是个好主意吗?
- std::<classtype>set.find(element) 是否使用类中的 == 运算符来比较元素?