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

时间:2012-02-07 09:45:17

标签: c++ managed-c++

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

因为在下面的例子中,编译器给出了“语法错误:'常量'”。

#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个元素?

4 个答案:

答案 0 :(得分:1)

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

class MyClass {
public :
      vector<int> vector1D;
      vector<vector<int>> vector2D;

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

答案 1 :(得分:0)

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

class MyClass {
public :
    vector<int> vector1D;
    vector< vector<int> > vector2D;

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

答案 2 :(得分:0)

您无法为构造函数中的13个元素保留空间。请使用vector::reserve

答案 3 :(得分:0)

如果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);
    }
};