c++ - 如何在 C++ 中将大小动态分配给数组?

标签 c++ arrays dynamic size cardinality

所以现在我在 C++ 中有一个名为 Set 的类。在其中,我有一个名为 mCardinality 的整数和一个名为 mElements 的整数数组。我希望能够在 mCardinality 的构造函数中接受一个整数,然后使用它为我的整数数组分配一个大小,有没有办法做到这一点,或者我绝对必须立即为它分配一个大小? (我想我可以只将大小设置为最大整数,然后只使用基数来限制我处理元素的循环,但更简洁的解决方案会更可取)。

我确实在这里看到可能有一种方法可以使用 std::vector 来调整数组的大小,这行得通吗?而且...该代码看起来如何?对于我想用它做的所有其他事情, vector 是否像 C++ 中的数组一样工作?

最佳答案

您的选择是:

  1. 使用 std::vector 或
  2. 使用普通的旧数组

使用 vector (推荐):

class YourSet {
public:
   YourSet(int size) : elements(size)
   {
   }
private:
   std::vector<int> elements;
};

使用数组(由于可能存在异常安全问题,并不真正推荐):

class YourSet {
public:
   YourSet(int size)
   {
       elements = new int[size];
   }
   ~YourSet()
   {
        delete[] elements;
   }
private:
   int* elements;
   // no implementation to prevent shallow copying
   YourSet( const YourSet&);
   void operator=(const YourSet&);
};

关于c++ - 如何在 C++ 中将大小动态分配给数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11535935/

相关文章:

php - 数组按值划分/拆分

c++ - 使用 dlopen 加载库时具有静态存储行为的动态变量

c++ - 修改 LLVM Tracer 以进行故障注入(inject)

c++ - 如何查找窗口的 SW_SHOW/SW_HIDE 状态

python - 使用python在c++中实现逻辑,如何?

php - 如何从 PHP 数组中获取 `json_encode()` 键?

php - 来自mysql存储过程和php json_decode的正确格式的关联数组

C++ 和 OpenSSL : SIGPIPE when writing in closed pipe

c++ - 用运算符折叠表达式 >>

c# - 从嵌套类中的 Controller 中的 DynamicObject 继承的对象无法在 ActionMethod 中创建属性