(C ++)在二维向量中初始化和声明元素

时间:2013-12-13 22:31:31

标签: c++

我在创建这个2D矢量后运行程序时遇到了尴尬的结果。该程序在启动时实际崩溃。但我基本上试图为2D矢量输入一组数据,这些数据旨在保留第一列中某些作物的蒲式耳数量(如整数),然后保留每种作物的产量比(作为INT)。我还没有宣布屈服比,但即使第二列留空(就每个元素的值而言)也不应该有问题。这是我的代码:

vector<vector<int> >crops(2, vector<int>(43));
    crops[0][0]=0;  //Arugula
    crops[1][0]=2000000;  //Beans
    crops[2][0]=0;  //Beets
    crops[3][0]=0;  //Cabbages
    crops[4][0]=0;  //Cammomile
    crops[5][0]=0;  //Carrots
    crops[6][0]=0;  //Catmint
    crops[7][0]=0;  //Celery
    crops[8][0]=0;  //Coriander
    crops[9][0]=0;  //Corn
    crops[10][0]=0; //Cucumbers
    crops[11][0]=0; //Eggplants
    crops[12][0]=2000000; //Fennel
    crops[13][0]=1500000; //Flax
    crops[14][0]=0; //Garlix
    crops[15][0]=0; //Greenwoad
    crops[16][0]=0; //Hem
    crops[17][0]=0; //Leeks
    crops[18][0]=0; //Lettuce
    crops[19][0]=0; //Madder
    crops[20][0]=0; //Mint
    crops[21][0]=0; //Mustard
    crops[22][0]=5000000; //Oats
    crops[23][0]=0; //Onions
    crops[24][0]=0; //Parsnips
    crops[25][0]=0; //Parsely
    crops[26][0]=2500000; //Peas
    crops[27][0]=0; //Poppy
    crops[28][0]=0; //Potatoes
    crops[29][0]=0; //Pumpkins
    crops[30][0]=0; //Radishes
    crops[31][0]=0; //Rutabagas
    crops[32][0]=0; //Spinach
    crops[33][0]=4000000; //Spring Barley
    crops[34][0]=0; //Squash
    crops[35][0]=0; //Tomatoes
    crops[36][0]=0; //Turnips
    crops[37][0]=0; //Vetches
    crops[38][0]=0; //Weld
    crops[39][0]=0; //Woad
    crops[40][0]=6000000; //Barley - Winter Crop
    crops[41][0]=5000000; //Mixtill - Winter Crop
    crops[42][0]=4000000; //Wheat - Winter Crop

虽然,我现在必须离开工作,但是今晚我回来后,我将能够回答任何答案。感谢那些想要帮助的人! :)

1 个答案:

答案 0 :(得分:2)

交换您的下标索引。

crops[13][0] -> crops[0][13]

宣布

vector<vector<int> >crops(2, vector<int>(43));

您创建了一个向量,该向量使用2个向量进行值初始化,每个向量都使用43个整数进行初始化(意味着它们初始化为0)。外部载体中有两个向量,因此您只能在不读取别人记忆的情况下进行作物[0]或作物[1]。

或者,当然,您可以将声明更改为:

vector<vector<int> >crops(43, vector<int>(2));