两个不同尺寸的硬编码阵列成一个二维矢量

时间:2012-03-20 04:22:53

标签: c++ arrays vector


我意识到,如果我想要“valArray”填充到“COLUMN 0,0”的右侧,我应该输入“[j] [1]”,但是,当我这样做时,我一直都会收到错误。 /> OUTPUT:------------------------------------------------ -------------------------------------------------- -------------------------------------------------- 55 0 0 0 0 0 0 0 0 0 0 0 0 -------这是行1 -------------------------- -------------------------------------------------- -------------------- 1 2 3 4 5 6 7 8 9 10 10 10 11 ----这是行2 ----------------------------- -------------------------------------------------- ---------------- 77 0 0 0 0 0 0 0 0 0 0 0 0 -------这就是行3 -------------------------- -------------------------------------------------- -------------------- 88 0 0 0 0 0 0 0 0 0 0 0 0 -------这是行4 -------------------------- -------------------------------------------------- ------------- 请告知如何正确填充,谢谢。

#include <iostream> 
#include <vector>
#include <Windows.h>
#include <algorithm>

using namespace std;

int main()          
{   

 int typeArray[4] = {55,66,77,88};
 int valArray[13] = {1,2,3,4,5,6,7,8,9,10,10,10,11};

 // for vector: 4 = LENGTH or NUMBER of ROWS; 13 = WIDTH or NUMBER of COLUMNS;
 //  0 = VALUE all cells are initialized to
  vector< vector <int> > myVector(4, vector<int> (13,0));

 for (int i = 0; i < 4; i++)
    {         
     myVector[i][0] = typeArray[i];

     for (int j = 0; j < 13; j++)
      {
         myVector[1][J] = valArray[j];

         }
     }      

   // print vector to screen with 2 ROWS, 3 COLUMNS
    for (int i = 0; i < 4; i++)
      {         
        for (int j = 0; j < 13; j++)
         { 
          cout << myVector[i][j] << ' ';
          }         
          cout << '\n';
      } 

    system("Pause");
    return 0; 
 }

2 个答案:

答案 0 :(得分:0)

您的代码无效的原因是您没有为myVector分配任何值。

假设typeArray和valArray的长度相同,并且您希望将每个放在一列中,请尝试这样的事情

for (int j = 0; j < sizeof(typeArray)/sizeof(int); j++)
{
     myVector[j][0] = typeArray[j];
     myVector[j][1] = valArray[j];
}

答案 1 :(得分:0)

一个问题是循环应该是sizeof(typeArray)/sizeof(typeArray[0])而不是sizeof(typeArray)。 Sizeof只是以字节为单位给出数组的大小。您需要将其除以每个元素的大小,以获得元素的数量。

至于如何组合数组,我认为你对for循环有正确的想法,只需手动分配值。

示例伪代码:

for each element in typeArray
myVector[i][0] = typeArray[i];
myVector[i][1] = valArray[i];