c ++指向浮点数的向量

时间:2012-08-04 16:04:10

标签: c++ pointers vector

我有一个c ++向量:

        vector<float> floats; 

稍后,此向量已初始化。我不知道向量容器的内部内容是什么,但我想知道是否可以返回指向浮点数组所在位置的指针。具体来说,我正在使用CUDA,我需要传递指向浮点数组的指针。我不能把它传给它。有没有办法可以做像

这样的事情
float *dapointer = &vector[0];

或类似的东西?我希望能够写到它,比如

dapointer[some index] = 4;

我意识到这违反了向量的要点,但是这个向量在程序的许多其他地方用于“向量目的”,但我需要CUDA才能访问数据。我不想改变我所有的其他代码来使用数组而不是向量。

4 个答案:

答案 0 :(得分:1)

float *dapointer = &floats[0];

一切都很好。

(注意运算符重载有多么模糊C的指针语法......)

答案 1 :(得分:0)

该方法应该有效,但要小心。修改向量后,您可能会留下悬空指针。对向量执行的非const运算使迭代器,指针和放大器无效。引用它管理的内存。在确保安全的方法是标记向量const

答案 2 :(得分:0)

正如评论所提到的,你的第一行就是这样做的一种方式。但是,如果向量不是至少大小为1,则该行未定义。

答案 3 :(得分:0)

float *dapointer = floats.data();

参考:http://en.cppreference.com/w/cpp/container/vector/data