什么是标准的良好应用::矢量::d ata
What is a good application of std::vector::data?
所以我和我的朋友前几天在看std::vector
类,注意到你可以使用函数std::vector::data
来检索指向 c++11 中内部数组的指针。 直观地说,这似乎有些多余,因为无论如何,您都可以使用向量上的[]
访问/更新内部数组的内容。
对我来说,将手"伸入"STL容器似乎是一种不好的做法。
无论如何,它必须有一些很好的应用。 所以我的问题是,这些应用程序是什么?
谢谢!
参考:http://www.cplusplus.com/reference/vector/vector/data/
例如,如果您需要将数据传递给仅接受指针的函数。例如,OpenGL有一堆(例如glBufferData
)。 std::vector
使内存管理变得容易,因此对于容器来说,它是一个不错的选择,而不是自己管理内存并可能将其泄漏到某个地方。这并不意味着你通过返回的指针改变向量内容,而是读取它和/或将其传递给期望指针的函数。
我能想到的一个例子是将 stl 向量转换为特征数组:
#include <iostream>
#include <Eigen/Dense>
#include <vector>
using namespace Eigen;
int main(){
std::vector<int> my_vec {1,2,3,4};
Array<int, 4, 1> my_array(my_vec.data());
std::cout << my_array << std::endl;
}
相关文章:
- 分段故障(堆芯转储)矢量
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 将二维矢量传递给类
- 读取文件并输入到矢量中
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 无法通过空白将文本文件行分隔为矢量
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 正在将csv文件读取为双精度矢量
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何通过 getter 函数删除矢量的元素?
- 如何在C++中将数组转换为矢量指针
- 在C++中将矢量转换为嵌套地图
- C++矢量迭代
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 将矢量<T>转换为矢量<数组<T>>
- 指针或结构的矢量
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 用于矢量处理的多个线程
- 反向矢量3
- 什么是标准的良好应用::矢量::d ata