Конструктор повторяющихся последовательностей

#c

#c

Вопрос:

Могу ли я создать

 vector<vector<int> >
  

используя конструктор повторяющихся последовательностей?

Я знаю, что могу создать такой

 vector<int> v(10, 0);
  

но я не знаю, как построить вектор vector, используя этот же метод. Спасибо!

Ответ №1:

Просто передайте ему вектор в качестве второго параметра:

 // 10 x 10 elements, all initialized to 0
vector<vector<int> > v(10, vector<int>(10, 0));
  

Ответ №2:

vector<vector<int> > v(10, vector<int>(30, 0)); создало бы десять векторов с 30 нулями в каждом.

Ответ №3:

 explicit vector ( size_type n, const Tamp; value= T(), const Allocatoramp; = Allocator() );
  

Конструктор повторяющихся последовательностей: инициализирует вектор с его содержимым, установленным на повторение, n раз, копий value .

 vector< vector<int> > vI2Matrix(3, vector<int>(2,0));   
  

Создает 3 вектора с 2 нулями в каждом.

По сути, можно было бы использовать вектор векторов для представления двумерного массива.

Вот пример исходного кода:

 #include <iostream>
#include <vector>

using namespace std;

main()
{
   // Declare size of two dimensional array and initialize.
   vector< vector<int> > vI2Matrix(3, vector<int>(2,0));    

   vI2Matrix[0][0] = 0;
   vI2Matrix[0][1] = 1;
   vI2Matrix[1][0] = 10;
   vI2Matrix[1][1] = 11;
   vI2Matrix[2][0] = 20;
   vI2Matrix[2][1] = 21;

   cout << "Loop by index:" << endl;

   int ii, jj;
   for(ii=0; ii < 3; ii  )
   {
      for(jj=0; jj < 2; jj  )
      {
         cout << vI2Matrix[ii][jj] << endl;
      }
   }
   return 0;
}