赋值从向量到动态数组(c++)
Assign values from vector to dynamic array (C++)
我有一个叫做lineVertices
的线的顶点向量,我要传递这个数据来绘制一个OpenGL形状,所以这个向量必须是一个数组的形式,我假设。我尝试了以下代码:
float* lineArray = new float[lineVertices.size()]();
for (unsigned i = 0; i < lineVertices.size(); i++) {
lineArray[i] = lineVertices.at(i);
}
然而,似乎vector的每个元素都只被赋值给了数组的第一个元素。即使lineArray
标识符是指向第一个元素的指针,是否有另一种方法来访问动态数组的不同元素?
如果它有帮助,当我调试时,它说lineArray
的大小总是1,尽管lineVertices'
的大小明显大于1。
我也尝试了下面的代码,但这也不起作用。
float* lineArray = &lineVertices[0];
任何帮助都是感激的!
你可以直接将std::vector
传递给OpenGL函数,该函数接受指向数组的指针。只使用::data()
成员函数。例子:
std::vector<float> vec = ...;
glVertex2fv(vec.data()); // only uses the first two elements
像这样的OpenGL函数接受指向一个或多个元素的指针。这并不一定是用new
创建的原始数组;它只需要是一个指向连续元素列表的指针。使用vector.data()
获取指向std::vector
的内容(第一个元素)的指针。
如果你真的想创建一个手动内存管理的新数组,你可以这样做(与你发布的代码效果相同):
float* arr = new float[vec.size()]; // NO () - not a constructor, but operator new[]
for (size_t i = 0; i < vec.size(); i++) {
arr[i] = vec[i];
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '