我正在关注 OpenGL super 圣经第 5 版,他们将 vector (数学中的 vector )定义为
typedef float M3DVector3f[3];
我正在尝试将它的一个实例添加到 std::vector(C++ 中的“可调整大小的数组”),但是我一直收到一条错误消息:
array initialization needs curly braces
我定义 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/