我有一个 std::vector 定义为:
std::vector<glm::vec3> faces;
我想将该 vector 的大小用作 float 组的长度。现在我正在尝试这样做:
float vertices[faces.size()][3];
但我不断收到错误消息,提示您必须使用常量值。我想可能是因为 vector 的大小可以改变,所以我尝试了这个:
const int size = faces.size();
float vertices[size][3];
但我仍然得到同样的错误。可以这样做吗?
最佳答案
你为什么要使用 C 数组? vector
在这里更合适。
vector<vector<float> > vertices(faces.size(), vector<float>(3));
如果您已经知道内部 vector 的大小并且它的大小是固定的,那么可以肯定的是,这里结构比 vector 更适合:
struct vertex {
float x;
float y;
float z;
};
vector<vertex> vertices(faces.size());
C 风格 vector 的用途在 C++ 中严重受到限制。唯一的用途基本上是如果您在编译时知道它们的大小(通常还有内容)并将它们用作美化常量。对于其他一切,存在更好的容器。甚至这个利基也由 std::array
填补了下一个标准。
关于c++ - 你能用 vector 的大小作为数组的长度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4776110/