所以我的朋友和我前几天正在查看std::vector
类,并注意到你可以使用函数std::vector::data
在c ++ 11中检索指向内部数组的指针。直观地说,这似乎有点多余,因为你可以使用矢量上的[]
来访问/更新内部数组的内容。
对我来说,“把手伸进”STL容器似乎是不好的做法。
无论如何,它必须有一些很好的应用。所以我的问题是,那些应用程序是什么?
谢谢!
答案 0 :(得分:3)
例如,如果您需要将数据传递给只接受指针的函数。例如,OpenGL有很多(例如glBufferData
)。 std::vector
使内存管理变得简单,因此对于容器来说它是一个很好的选择,而不是自己管理内存并可能将其泄漏到某个地方。这并不意味着你通过返回的指针改变向量内容,而是读取它和/或将它传递给期望指针的函数。
答案 1 :(得分:2)
我能想到的一个例子是将stl向量转换为Eigen Array:
#include <iostream>
#include <Eigen/Dense>
#include <vector>
using namespace Eigen;
int main(){
std::vector<int> my_vec {1,2,3,4};
Array<int, 4, 1> my_array(my_vec.data());
std::cout << my_array << std::endl;
}