我有一个c ++向量:
vector<float> floats;
稍后,此向量已初始化。我不知道向量容器的内部内容是什么,但我想知道是否可以返回指向浮点数组所在位置的指针。具体来说,我正在使用CUDA,我需要传递指向浮点数组的指针。我不能把它传给它。有没有办法可以做像
这样的事情float *dapointer = &vector[0];
或类似的东西?我希望能够写到它,比如
dapointer[some index] = 4;
我意识到这违反了向量的要点,但是这个向量在程序的许多其他地方用于“向量目的”,但我需要CUDA才能访问数据。我不想改变我所有的其他代码来使用数组而不是向量。
答案 0 :(得分:1)
float *dapointer = &floats[0];
一切都很好。
(注意运算符重载有多么模糊C的指针语法......)
答案 1 :(得分:0)
该方法应该有效,但要小心。修改向量后,您可能会留下悬空指针。对向量执行的非const
运算使迭代器,指针和放大器无效。引用它管理的内存。在确保安全的方法是标记向量const
。
答案 2 :(得分:0)
正如评论所提到的,你的第一行就是这样做的一种方式。但是,如果向量不是至少大小为1,则该行未定义。
答案 3 :(得分:0)
float *dapointer = floats.data();