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

Я использую 2 МНОЖЕСТВА РАЗЛИЧНЫХ РАЗМЕРОВ в одном 2-мерном векторе, и мои выходные данные неверны. Массивы имеют размер 4 и размер 13.
Я хочу, чтобы КОЛОННА 0 имела: 55, 66, 77, 88.
Я хочу, чтобы КОЛОННЫ 1-12 имели 1,2,3,4,5,6,7,8,9,10,10,10,11 в КАЖДОЙ СТРОКЕ. Казалось бы, 2-й цикл для массива размера 13 должен был бы зацикливаться 4 раза, чтобы заполнить 4 строки, однако я не уверен, как это сделать. Вот что у меня есть в коде и выводе:

#include <iostream> 
#include <vector>

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}; 

// 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> (14,0)); 

  for (int i = 0; i < myVector.size(); i++)  
    { 
        myVector[i][0] = typeArray[i]; 
    for (int j = 0; j < myVector[i].size(); j++)  
      { 
         myVector[1][j] = valArray[j]; 
      } 
   } 
   // print vector to screen with 4 ROWS, 1 COLUMNS 
    for (int i = 0; i < myVector.size();  i++) 
      {          
        for (int j = 0; j < myVector[i].size(); j++) 
         {  
          cout << myVector[i][j] << ' '; 
          }          
          cout << '\n'; 
      } 

OUTPUT ---------------------------------------------- -------------------------------------------------- -------------------------------------------------- - 55 0 0 0 0 0 0 0 0 0 0 0 0 ---- первый ряд ------------------------------- -------------------------------------------------- -------------------------------- 1 2 3 4 5 6 7 8 9 10 10 10 11 ---- второй ряд ------------------------------- -------------------------------------------------- -------------------- 77 0 0 0 0 0 0 0 0 0 0 0 0 ------- третий ряд ---------------------------- -------------------------------------------------- ---------------------------- 88 0 0 0 0 0 0 0 0 0 0 0 0 ------- четвертый ряд


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

// 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> (14,0)); 

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

    for (int j = 0; j < myVector[i].size(); j++)  
      { 
         myVector[1][j + 1] = valArray[j]; 
      } 
   } 
   // print vector to screen with 4 ROWS, 14 COLUMNS 
    for (int i = 0; i < myVector.size();  i++) 
      {          
        for (int j = 0; j <= myVector[i].size(); j++) 
         {  
          cout << myVector[i][j] << ' '; 
          }          
          cout << '\n'; 
      } 

ВЫВОД ---------------------------------------------- -------------------------------------------------- -------------------------------------------------- - 55 1 2 3 4 5 6 7 8 9 10 10 10 11 ---- первый ряд ------------------------------ -------------------------------------------------- ----------------------- 66 1 2 3 4 5 6 7 8 9 10 10 10 11 ---- второй ряд ------------------------------ -------------------------------------------------- ------------------ 77 1 2 3 4 5 6 7 8 9 10 10 10 11 ---- третий ряд ------------------------------ -------------------------------------------------- -------------------- 88 1 2 3 4 5 6 7 8 9 10 10 10 11 ---- четвертый ряд


Это исправленный код для обновления Kerrek, он отлично работает:

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

// 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> (14,0)); 

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

   for (int j = 1; j < myVector[i].size(); j++) 
     {
         myVector[i][j] = valArray[j - 1];
     }

   } 

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

ВЫХОД ТО ЖЕ КАК 2-Й БЛОК КОДА, ДА!

1 Ответ

1 голос
/ 25 марта 2012

Что-то вроде этого возможно:

vector< vector <int> > myVector(4, vector<int> (14, 0));   // one longer!

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