Два жестко закодированных массива разных размеров в один двумерный вектор - PullRequest
0 голосов
/ 20 марта 2012

Я понимаю, что если я хочу, чтобы "valArray" заполнял справа от "COLUMN 0,0", я должен поставить "[j] [1]", однако, я продолжаю получать ошибку, когда делаю это.
ВЫХОД:------------------------------------------------ -------------------------------------------------- -------------------------------------------------- 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 голосов
/ 20 марта 2012

Одна проблема состоит в том, что циклы должны быть до sizeof(typeArray)/sizeof(typeArray[0]) вместо sizeof(typeArray).Sizeof просто дает вам размер массива в байтах.Вам нужно разделить это на размер каждого элемента, чтобы получить количество элементов.

Что касается того, как комбинировать массивы, я думаю, у вас есть правильная идея с циклом for и простым ручным назначениемценности.

пример кода псевдо:

for each element in typeArray
myVector[i][0] = typeArray[i];
myVector[i][1] = valArray[i];
0 голосов
/ 20 марта 2012

Причина, по которой ваш код не работает, заключается в том, что вы не присваиваете значения myVector.

Предполагая, что typeArray и valArray имеют одинаковую длину, и вы хотите поместить каждое в столбец, попробуйте что-то вроде этого

for (int j = 0; j < sizeof(typeArray)/sizeof(int); j++)
{
     myVector[j][0] = typeArray[j];
     myVector[j][1] = valArray[j];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...