如何将 std::vector<float> 转换为浮点数组? [复制]

Posted

技术标签:

【中文标题】如何将 std::vector<float> 转换为浮点数组? [复制]【英文标题】:How can I convert a std::vector<float> to a float array? [duplicate] 【发布时间】:2011-01-21 20:42:25 【问题描述】:

可能重复:Getting array from std:vector

我一直在阅读this question 的答案并发现它们很有用,但是我如何才能对浮点类型做同样的事情呢?

【问题讨论】:

为什么这不适用于float 项目? 接受的答案适用于这个问题,就像它适用于任何其他数据类型一样。因此投票结束作为 dup。 【参考方案1】:

同样的事情。

std::vector<float> v(10);
float *p = &v[0];

【讨论】:

【参考方案2】:

正如你引用的答案所展示的那样。

std::vector<float> v;
v.push_back(1.2);
v.push_back(3.4);

// &v[0] is a pointer to the first element of the vector.

float* array_sort_of = &v[0];
for (size_t i = 0; i < 2; i++) 
    std::cout << array_sort_of[i] << " ";


// Output: 1.2 3.4

【讨论】:

float* arr = v.data(); @x4444 我更喜欢&amp;v[0],但是也可以 std::vector::data 是获取向量内部使用的内存数组的直接指针的标准方法(c++11 起)。 cplusplus.com/reference/vector/vector/data 。该方法被添加到 C++11 是有原因的。如果您使用现代 C++ 编程,我建议您使用标准的做事方式。

以上是关于如何将 std::vector<float> 转换为浮点数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

从 std::vector<std::vector<float>> 转换为 float**

std::vector<std::pair<int, float>> 和 void 错误

std::vector<float> 成员的 boost 序列化/反序列化失败

c ++两个线程之间更快的变量交换一个std :: vector <float *>和array

在 std::vector 上的 Openmp 和缩减?

正确分配 std::vector