C ++:为什么引入了std :: vector :: data成员函数?

问题描述 投票:2回答:2

我从下面的链接看着STL的矢量容器。并且提到了向该容器添加(使用C ++ 11)的新成员函数之一是vector::data,它返回指向内部使用的内存数组的指针。

http://www.cplusplus.com/reference/vector/vector/data/

上面链接中给出的示例代码也显示了它的用法,但似乎所有这些都可以用迭代器完成。

引入这个成员函数有什么具体原因吗?

c++ c++11 vector stl member-functions
2个回答
2
投票

我认为data()功能是为了完整的界面和方便而引入的。

这样我们就不需要诉诸&vec[0]&vec.front()的丑陋。

此外,获取指向底层数据的指针在许多应用程序中很有用,例如与C代码或某些外部库接口,或者在嵌入式上下文中。


2
投票

来自评论:

  • std :: vector是一个ContiguousContainer,可以通过指针访问。
  • 类似C的函数可能需要通过指针访问

有可能失败:

  • 删除指针会使向量无效,并在向量被销毁时产生问题。
  • 导致在向量中重新分配底层数据的所有内容(如添加元素或缩小)将使指针指向悬空指针。 (正如评论中所指出的,迭代器和引用也是如此)
© www.soinside.com 2019 - 2024. All rights reserved.