What happens when you call data() on a std::vector?

后端 未结 4 1053
既然无缘
既然无缘 2020-12-01 23:39

C++11 has implemented data() member function on std::vector, which gives you a pointer to the memory array. Does this mean the template specializat

相关标签:
4条回答
  • 2020-12-01 23:46

    Well, there is no std::vector<bool>::data, so what you can expect is a compile error.

    0 讨论(0)
  • 2020-12-01 23:56

    No. Per std::vector<bool>

    Does not necessarily store its data in a single contiguous chunk of memory.

    There is no data() member.

    0 讨论(0)
  • 2020-12-02 00:04

    This page documenting the class explicitely indicates that the specialization does not provide this method.

    The specialization has the same member functions as the unspecialized vector, except data, emplace, and emplace_back, that are not present in this specialization.

    This other page as well as §23.3.7 of the C++ specifications do confirm it.

    0 讨论(0)
  • 2020-12-02 00:10

    It won't compile, unless your implementation has a non-standard extension. The specialisation of std::vector<bool>, as specified in C++11 23.3.7/1, doesn't declare a data member.

    0 讨论(0)
提交回复
热议问题