【问题标题】:Create Array of Actual Objects C++创建实际对象数组 C++
【发布时间】:2012-03-20 13:15:38
【问题描述】:

我想创建一个数组来存储实际对象而不是指向 C++ 中对象的指针?

有人可以解释我该怎么做吗?使用向量更好还是直接喜欢:

Student s [10];

或

Student s [10][];

【问题讨论】:

  • 第二个还能编译吗?
  • 不,第二个没有编译。在 C++ 中,[] 是有效语法的地方很少。

标签: c++ arrays object


【解决方案1】:

使用:

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;

【讨论】:

  • 谢谢,我想接受你的完整答案,但它不允许我这样做:((
  • 再问:如何在头文件中定义Vector大小?我不能吗?那么如何在cc文件中重新定义呢?
  • A std::vector 没有固定大小,您可以将.push_back() 元素放入其中(并删除它们)。您可以使用.size() 检索当前大小。
  • thnx 但是我知道这个向量的大小。提前固定它的大小会更好吗?
  • 如果你像上面的例子一样在它的构造函数中输入向量的大小 (std::vector&lt;Student&gt; students(10);) 它将这个作为它的初始大小。如果您不从std::vector 中删除或插入元素,则大小不会改变,您可以使用固定大小。但不幸的是,您无法将向量的大小固定到一定数量,但这不应该让您担心。
【解决方案2】:

不要使用数组。数组是 C 而不是 C++。请改用std::vector,这是处理此问题的 C++ 方式。

【讨论】:

  • 你能建议我一种使用向量来存储实际对象的方法吗?谢谢
  • @shaklasah:向量始终存储实际对象,除非您另有明确说明。
【解决方案3】:

如果你想让你的数组可增长,我建议使用 std::vector,否则只使用 Student students[10]; 10 个对象。

【讨论】:

    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2021-07-22
    • 2018-05-15
    • 1970-01-01
    相关资源
    最近更新 更多