我从下面的链接中查看STL的向量容器。并提到,vector::data
是随C ++ 11添加到此容器的新成员函数之一,它返回指向内部使用的内存阵列的指针。
http://www.cplusplus.com/reference/vector/vector/data/
上面链接中给出的示例代码也显示了它的用法,但是似乎所有这些事情也可以通过迭代器完成。
引入此成员函数是否有任何特定原因?
答案 0 :(得分:2)
来自评论:
存在失败的可能性:
删除指针将使vecotr无效,并且在破坏向量时会产生问题。
所有导致向量中基础数据重新分配的因素(例如添加元素或缩小)都会使指针指向悬空指针。 (正如评论中指出的那样,对于迭代器和引用也是如此)
答案 1 :(得分:2)
我认为引入data()
函数是为了实现界面的完整性和便利性。
这样,我们就不必求助于&vec[0]
或&vec.front()
的丑陋了。
此外,获得指向基础数据的指针在许多应用程序中很有用,例如与C代码或某些外部库的接口,或者在嵌入式上下文中。