【问题标题】:Array of Instances with constructors带有构造函数的实例数组
【发布时间】:2023-03-11 15:26:02
【问题描述】:

我有一个类F,它有一个这样的构造函数:

public:
  F(int N){
    Tree = new int[N];
  }

我想创建一个包含 26 个 F 实例的数组

如果构造函数没有参数,我可以直接完成F ArrayOfF[26]

但是,这个构造函数确实有一个参数,并且类似于F(N) ArrayOfF[26] 的东西不起作用。

有什么好的方法可以做到这一点?

【问题讨论】:

  • 您是否建议我使用 std::vector 来一一推送实例?用简单的数组就没有好办法吗?
  • 您还应该在 Tree 类中使用 std::vector ......(而且 std::vector 很棒,因为这个 std::vector<F> ArrayOfF(26, F(N))
  • @AgnishomChattopadhyay 我建议您将数组替换为向量,以便您可以将其设置为所需的任何大小
  • @AgnisomChattopadhyay 只是std::vector<F> v(26, F(99));

标签: c++ arrays class initialization


【解决方案1】:

一个选项是明确的:

F ArrayOfF[26] = {
    F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), F(9), F(10),
    F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), F(9), F(20),
    F(1), F(2), F(3), F(4), F(5), F(6)
};

std::vector 也是一个不错的选择。

std::vector<F> ArrayOfF(26, F(42));

std::vector<F> ArrayOfF;
ArrayOfF.reserve(26); // Optional: to do only one allocation.
for (int i = 0; i != 26; ++i) {
    ArrayOfF.push_back(F(2 * i + 5));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2016-09-21
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2016-06-28
    相关资源
    最近更新 更多