Vector 当2D数组向量已满时,如何初始化向量数组?

Vector 当2D数组向量已满时,如何初始化向量数组?,vector,stl,mfc,Vector,Stl,Mfc,我制作了动态向量类 但问题是,当主函数不断循环时 函数循环时,my2dArr的行大小增加 当数据循环时,我想复制新数据 void main() { int data[450]; DynamicArray<int> my2dArr(36, 100); for(int i = 0;i < 36;++i) { for(int j = 1;j < 16;++j) {

我制作了动态向量类

但问题是,当主函数不断循环时

函数循环时,my2dArr的行大小增加

当数据循环时,我想复制新数据

  void main()
     {

       int data[450];

     DynamicArray<int> my2dArr(36, 100);
     for(int i = 0;i < 36;++i)
        {
            for(int j = 1;j < 16;++j)
            {


              my2dArr[i][j-1] = data[i];

            }   

        }   

    }
void main()
{
int数据[450];
DynamicArray my2dArr(36100);
对于(int i=0;i<36;++i)
{
对于(int j=1;j<16;++j)
{
my2dArr[i][j-1]=数据[i];
}   
}   
}
//向量类

    class DynamicArray
    {
    public:
        DynamicArray(){};

        DynamicArray(int rows, int cols): dArray(rows, vector<T>(cols)){}

        vector<T> & operator[](int i) 
        { 
          return dArray[i];
        }
        const vector<T> & operator[] (int i) const 
        { 
          return dArray[i];
        }
        void resize(int rows, int cols)//resize the two dimentional array .
        {
            dArray.resize(rows);
            for(int i = 0;i < rows;++i) dArray[i].resize(cols);
        }

    void clearCOL()
    {
        for(int i = 0;i < dArray.size();i++)
    {
          for(int j = 0;j < dArray[i].size();++j)
          {

            dArray[j].erase();
          }
    }

        }
    private:
        vector<vector<T> > dArray;  
    };
classdynamiccarray
{
公众:
DynamicArray(){};
DynamicArray(int行,int列):dArray(行,向量(列)){}
向量和运算符[](int i)
{ 
返回dArray[i];
}
常量向量和运算符[](int i)常量
{ 
返回dArray[i];
}
void resize(int行,int列)//调整二维数组的大小。
{
dArray.resize(行);
对于(int i=0;i
嵌套for循环在初始化数组时应该很好,但是您需要将值放入
数据
数组中,以便在初始化时使用它

如果您只初始化数据一次,您可能会考虑一个第三构造函数重载,它占用了<代码> int []/Calp>,如下所示:

DynamicArray( int rows, int cols, T array[] ): dArray( rows, vector< T >( cols ) )
{
    for( int i = 0; i < rows; i++ )
    {

        for( int j = 0; j < cols; j++ )
        {
            dArray[i][j] = array[i * rows + j];
        }
    }
}
DynamicArray(int行,int列,T数组[]):dArray(行,向量(列))
{
对于(int i=0;i

您需要确保数组是您指定的大小。在您的示例中,传入450 int数组以初始化3600 int的DynamicArray。在您的示例中,您实际上正在读取非法数据,因为您转到36行中每个行的第16列,所以您实际上正在从450 int数组中读取576个元素。不过,我想数组还是未初始化的,所以它都是垃圾。

请更具体一些。你得到的实际错误是什么?另外,请修复代码缩进,使其更可读。是的,没问题。如果回答了您的问题,您应该通过单击“我的答案”旁边的复选标记图标来接受答案。如果我还没有回答你想问的问题,请告诉我,我会尽力澄清。