【发布时间】:2016-05-04 13:12:24
【问题描述】:
来自prior-C++11 的std::vector::begin() 是否等同于C++11 中的std::vector::data()?
我问这个的原因,早于 C++11,我曾经将 std::vector::begin() 视为指针,但在 C++11 之后,它不是,而且我不能转换为等效的指针。那么,在 C++11 之后我可以使用 data() 代替吗?
【问题讨论】:
-
std::vector::begin() 从来都不是指针。
-
如果您过去将
std::vector::begin()视为指针,那么您将依赖特定实现的std::vector::iterators 表示作为指针。从来没有保证会这样。 -
您是否使用
&(*std::vector::begin())获取指向矢量数据的指针? -
文档是否混乱,让你不得不问?如果是,那到底有什么令人困惑的地方?
-
只是出于好奇,但 std::basic_string 在 c++03 标准中也有数据方法(const 版本)。 const CharT* data() const;