【发布时间】:2012-03-20 13:15:38
【问题描述】:
我想创建一个数组来存储实际对象而不是指向 C++ 中对象的指针?
有人可以解释我该怎么做吗?使用向量更好还是直接喜欢:
Student s [10];
或
Student s [10][];
【问题讨论】:
-
第二个还能编译吗?
-
不,第二个没有编译。在 C++ 中,
[]是有效语法的地方很少。
我想创建一个数组来存储实际对象而不是指向 C++ 中对象的指针?
有人可以解释我该怎么做吗?使用向量更好还是直接喜欢:
Student s [10];
或
Student s [10][];
【问题讨论】:
[] 是有效语法的地方很少。
使用:
Student s [10];
创建一个包含 10 个 Student 实例的数组。
我认为Student s [10][]; 无效。
但是对于 C++,我不会使用 C 类型的数组,最好使用像 std::vector 或 C++0x std::array 这样的类,这些类可能不适用于非最新的标准库/编译器。
std::vector 的上述示例
#include <vector>
...
std::vector<Student> students(10);
还有std::array:
#include <array>
...
std::array<Student, 10> students;
【讨论】:
std::vector 没有固定大小,您可以将.push_back() 元素放入其中(并删除它们)。您可以使用.size() 检索当前大小。
std::vector<Student> students(10);) 它将这个作为它的初始大小。如果您不从std::vector 中删除或插入元素,则大小不会改变,您可以使用固定大小。但不幸的是,您无法将向量的大小固定到一定数量,但这不应该让您担心。
不要使用数组。数组是 C 而不是 C++。请改用std::vector,这是处理此问题的 C++ 方式。
【讨论】:
如果你想让你的数组可增长,我建议使用 std::vector,否则只使用 Student students[10]; 10 个对象。
【讨论】: