2D вектор с параметризованным конструктором

#c #vector #constructor

#c #вектор #конструктор

Вопрос:

Я пытаюсь создать двумерный std::vector , который будет содержать объекты этого унаследованного мной класса. Проблема, с которой я сталкиваюсь, заключается в том, что у этого класса есть только один конструктор, и который использует один параметр ( std::string если быть точным).

 #define HEIGHT 4
#define WIDTH 4 

#include <vector>
using std::vector;

static vector<vector<Reaper> > reaper(HEIGHT, vector<Reaper> (WIDTH));
  

Это должно создать матрицу объектов Reaper 4×4 в моем векторе. По крайней мере, я знаю, что это сработало бы, если бы у меня был конструктор без доступных параметров.

Но именно так я бы создал экземпляр Reaper объекта:

 Reaper r0("R0");
Reaper* r1 = new Reaper("R1");
  

Теперь я не могу понять, как включить этот конструктор в мою векторную конструкцию?

Комментарии:

1. Не используйте #define для констант. Не используйте new для создания экземпляров объектов. Кроме того, для матричных двумерных векторов вы почти всегда хотите использовать одномерный вектор длины width * height и вычислять индекс на основе ваших двух координат (разумеется, все они заключены в класс).

Ответ №1:

Вы можете использовать vector(size_t n, const Tamp; t) конструктор для инициализации внутреннего вектора reaper s некоторым начальным постоянным значением, например

 static vector<vector<Reaper> > reaper(HEIGHT, vector<Reaper> (WIDTH, Reaper("value")));
  

Кажется, вы использовали это один раз для внешнего вектора — вы можете использовать это и для внутреннего вектора.

В качестве альтернативы вы можете создать 2d-вектор из указателей на reaper s.