cbegin()/cend() 与 constBegin()/constEnd()
cbegin()/cend() vs constBegin()/constEnd()
Qt 5.0 在不同的容器 类 中引入了迭代器方法 cbegin()
和 cend()
,例如 QList or QMap.
但是类里面还有constBegin()
和constEnd()
方法。
所有这些方法都是 const
和 return STL 风格 const_iterator
。
cbegin()
/cend()
的功能是否与 constBegin()
/constEnd()
相同?对我来说似乎是这样,但 QList, QMap or the container classes. 的文档中没有说明任何内容
- 是否存在应该使用
cbegin()
/cend()
而不是 constBegin()
/constEnd()
或反之亦然的情况?
cbegin()
和 cend()
是为了与标准库容器兼容而引入的,标准库容器自 C++11 起都包含此类函数。
Qt 只是想让它的接口与标准库相似。
constBegin()
等只是旧版本(Qt 在 C++11 发布之前添加了它们)。使用它们没有区别。
我会使用 constBegin()
和 constEnd()
,因为它们更明确并且 'Qt style',但这只是我个人的偏好。 cbegin()
/cend()
可能被一些为标准容器实现的算法使用(因此它们存在于 Qt 中——它们有助于重用一些代码)。如果您希望在某个时候在 Qt 之外重用您的代码,请使用它们。
Qt一般经常会提供不同的使用方式,让程序员可以使用他们习惯使用的风格。
类似的情况是迭代器的类型。您可以使用标准库中使用的标准样式或 Java 样式迭代器。这是为了方便用户。
cbegin和constBegin的道理是一样的。此外,如果文档没有说明差异,则没有差异。
如您所见。 constBegin 是纯 QtStyle,cbegin 是 STL 风格。
Qt 5.0 在不同的容器 类 中引入了迭代器方法 cbegin()
和 cend()
,例如 QList or QMap.
但是类里面还有constBegin()
和constEnd()
方法。
所有这些方法都是 const
和 return STL 风格 const_iterator
。
cbegin()
/cend()
的功能是否与constBegin()
/constEnd()
相同?对我来说似乎是这样,但 QList, QMap or the container classes. 的文档中没有说明任何内容
- 是否存在应该使用
cbegin()
/cend()
而不是constBegin()
/constEnd()
或反之亦然的情况?
cbegin()
和 cend()
是为了与标准库容器兼容而引入的,标准库容器自 C++11 起都包含此类函数。
Qt 只是想让它的接口与标准库相似。
constBegin()
等只是旧版本(Qt 在 C++11 发布之前添加了它们)。使用它们没有区别。
我会使用 constBegin()
和 constEnd()
,因为它们更明确并且 'Qt style',但这只是我个人的偏好。 cbegin()
/cend()
可能被一些为标准容器实现的算法使用(因此它们存在于 Qt 中——它们有助于重用一些代码)。如果您希望在某个时候在 Qt 之外重用您的代码,请使用它们。
Qt一般经常会提供不同的使用方式,让程序员可以使用他们习惯使用的风格。
类似的情况是迭代器的类型。您可以使用标准库中使用的标准样式或 Java 样式迭代器。这是为了方便用户。
cbegin和constBegin的道理是一样的。此外,如果文档没有说明差异,则没有差异。
如您所见。 constBegin 是纯 QtStyle,cbegin 是 STL 风格。