在C++ 11中,来自priorC++ 11的std :: vector :: begin()是否等同于std :: vector :: data()?

Dr.*_*ana 5 c++ vector c++11

std::vector::begin()从先前C++11等效到std::vector::data()C++ 11?我问这个的原因,早于C++ 11,我曾经把std :: vector :: begin()当作指针,但是在C++ 11之后,它不是,我不能转换为等效的指针.那么,我可以在C++ 11之后使用data()吗?

Tar*_*ama 8

不,begin返回一个迭代器,而data返回一个指针.对于给定的实现,这些可能是相同的,但您不应指望这一点.

  • @alcedine实际上已经在C++ 03中得到了纠正.它只是C++ 98而在此之前并不能保证它. (7认同)
  • @alcedine:你在考虑`std :: string`.`std :: vector`一直是连续的,因为它总是被设计为一个可用于C interop的缓冲区的包装器. (3认同)
  • @alcedine,不是真的.至少是2003年的contiguos,我有一种非常强烈的感觉,它是98年的contiguos. (2认同)
  • 事实上,我无法在98标准中找到任何规范性要求,因为矢量是连续的... (2认同)