0

我有一个 C++ 向量:

        vector<float> floats; 

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

float *dapointer = &vector[0];

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

dapointer[some index] = 4;

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

4

4 回答 4

1
float *dapointer = &floats[0];

都很好。

(请注意有趣的运算符重载如何混淆 C 的指针语法......)

于 2012-08-04T16:08:24.150 回答
0

该方法应该有效,但要小心。对向量进行修改后,您可能会留下悬空指针。在向量上执行的非const操作会使迭代器、指针和对其管理的内存的引用无效。使这个安全的方法是标记向量const

于 2012-08-04T16:08:00.317 回答
0

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

于 2012-08-04T16:08:13.193 回答
0
float *dapointer = floats.data();

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

于 2014-02-05T22:55:06.233 回答