2d向量c ++中的错误

时间:2017-02-24 19:58:03

标签: c++

当我尝试在c ++中填充2d向量时,我不断出现超出范围的错误。我哪里错了?下面发布的是我的问题的缩短版本,我认为会产生同样的问题。

#include <vector>
#include <stdio.h>
#include <cstdlib>
#include <iostream>

typedef std::vector<double> NA;
typedef std::vector<NA> NB;

NA NI;
NB NO;

long i=0,j=0;
int N = 10;
double R;

int main(){

    for(i=0;i!=N;i++){

       NO.push_back(NI);
        for(j=i+1;j<N;j++){

            R = rand();


            NO.at(i).push_back(j);
            NO.at(i).at(j) = R;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

  1. 你的typedef是错误的。你的意思是:

    typedef std::vector<double> NA;
    typedef std::vector<NA> NB;
    //                  ^^
    
  2. 您的循环索引错误。你的意思是j++

  3. 内部索引必须偏移:at(j - i - 1)

  4. 外部容器更新NO.push_back(NI);需要进入外部循环。