gpt4 book ai didi

c++ - cbegin()/cend() 与 constBegin()/constEnd()

转载 作者:可可西里 更新时间:2023-11-01 18:25:16 25 4
gpt4 key购买 nike

Qt 5.0 在不同的容器类中引入了迭代器方法cbegin()cend(),例如QList。或 QMap .

但是这些类中也有 constBegin()constEnd() 方法。

所有这些方法都是 const 并返回一个 STL 风格的 const_iterator

  • cbegin()/cend() 是否与 constBegin()/constEnd() 具有相同的功能> ?对我来说似乎是这样,但 QList 的文档中没有说明任何内容, QMapcontainer classes .
  • 是否存在应该使用 cbegin()/cend() 而不是 constBegin()/constEnd( ) 还是相反?

最佳答案

cbegin()cend() 的引入是为了与标准库容器兼容,标准库容器自 C++11 起就包含此类函数。
Qt 只是想让它的接口(interface)与标准库相似。constBegin() 等只是旧版本(Qt 在 C++11 发布之前添加了它们)。使用它们没有区别。

我会使用 constBegin()constEnd() 因为它们更明确并且是“Qt 风格”,但这只是我个人的偏好。 cbegin()/cend() 可能被一些为标准容器实现的算法使用(因此它们存在于 Qt 中 - 它们有助于重用一些代码)。如果您希望在某个时候在 Qt 之外重用您的代码,请使用它们。

关于c++ - cbegin()/cend() 与 constBegin()/constEnd(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32372710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com