如何将 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 我更喜欢&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 序列化/反序列化失败