初始化矢量以包含13个元素

Initialize Vectors to Contain 13 Elements

本文关键字:13个 元素 包含 初始化      更新时间:2023-10-16

我正在尝试初始化向量,使其在类构造函数中各包含13个元素。

因为在以下情况下,编译器会给出"语法错误:'constant'"。

#include <vector>
using namespace System;  
public ref class MyClass {
public :
      vector<int> vector1D(13) ;     //  Syntax error : 'constant'
      vector<vector<int>> vector2D(13,vector<int>(13)) ;

};

那么,如何在构造函数中将向量初始化为包含13个元素呢?

非静态成员必须在构造函数定义中初始化,而不是在成员声明中初始化:

class MyClass {
public :
      vector<int> vector1D;
      vector<vector<int>> vector2D;
      MyClass() : 
          vector1D(13),
          vector2D(13,vector<int>(13))
      {}
};

您需要在构造函数中执行此操作:

class MyClass {
public :
    vector<int> vector1D;
    vector< vector<int> > vector2D;
    MyClass()
    {
        vector1D = vector<int>(13);
        vector2D = vector< vector<int> > (13, vector<int>(13));
    }
};

您不能在构造函数中为13个元素保留空间。使用vector::reserve。

如果MyClass是托管类,则它不能具有非托管成员。

#using <mscorlib.dll>
#include <vector>
using namespace System;
public ref class MyClass {
public :
    cli::array<int>^ vector1D;
    cli::array<cli::array<int>^>^ vector2D;
    MyClass()
    {
        Array::Resize(vector1D, 13);
        Array::Resize(vector2D, 13);
        for each (cli::array<int>^ item in vector2D)
            Array::Resize(item, 13);
    }
};