c++ - 我需要帮助将数组添加到 C++ 中的 vector

标签 c++ arrays opengl vector

我正在关注 OpenGL super 圣经第 5 版,他们将 vector (数学中的 vector )定义为

typedef float   M3DVector3f[3];

我正在尝试将它的一个实例添加到 std::vector(C++ 中的“可调整大小的数组”),但是我一直收到一条错误消息:

array initialization needs curly braces

Full Error

我定义 std::vector 的方式以及我添加到它的方式是:

std::vector<M3DVector3f> vertices;

float vertex[3];
sscanf_s(line.c_str(), "%*s %f %f %f", &vertex[0], &vertex[1], &vertex[2]);

M3DVector3f v = {vertex[0], vertex[1], vertex[3]};

vertices.push_back(v);

我发现问题出在 vertices.push_back(v) 调用上,因为我在注释掉它时没有收到错误。有人可以向我解释并帮助我弄清楚为什么它不允许我将此 vector 添加到我的 vector 中吗?

最佳答案

数组不能(直接)复制或分配,标准容器要求类型可复制和分配。

但是,您可以(并且可能应该)这样做:

struct M3DVector3f // a basic vector class
{
    float x;
    float y;
    float z;
};

可复制且同样可用。

关于c++ - 我需要帮助将数组添加到 C++ 中的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4252150/

相关文章:

c++ - 如何在没有参数的情况下从 for_each() 调用函数

c++ - 为 float 定义值特征

php - 如何过滤关联数组?

javascript - 如何使用 JavaScript 排序对树 JSON 对象进行双重排序?

opengl - Glfw 获取字母位、深度位和模板位

c++ - Cocos2d-x (4.0) - 整数像素缩放

c++ - 计算最大差值的并行算法

Java 默默地无法从数组打印

c++ - 带有 SDL2 的 OpenGL 没有返回正确的版本

c++ - 如何在 Windows 中查找所有连接的可移动 USB 存储设备?