繁体   English   中英

浮于向量内的c ++指针

[英]c++ pointer to floats inside of vector

我有一个c ++向量:

        vector<float> floats; 

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

float *dapointer = &vector[0];

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

dapointer[some index] = 4;

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

float *dapointer = &floats[0];

都很好。

(请注意,运算符重载如何使C的指针语法模糊不清...)

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

如评论所述,您的第一行是实现此目的的一种方法。 但是,如果向量的大小不小于1,则该行未定义。

float *dapointer = floats.data();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM