c++ - 你能用 vector 的大小作为数组的长度吗?

标签 c++ arrays vector

我有一个 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/

相关文章:

c++ - 为类 std::vector<> 的结构成员重载 operator=

math - 两点方向

c++ - 为 std 算法函数创建一个包装器以采用容器而不是迭代器

c++ - 为什么取消引用字符串 vector 迭代器需要括号?

c++ - QComboBox 子类中的断点不起作用

php - 分层 php 函数执行错误!这是什么?

python - 测试数组是否是数组数组的一部分并将其删除

c++ - 从数组指针中添加和减去一个元素

c++ - 自定义类的 vector

c++ - 使MFC滚动条蒙皮