Чтобы упростить обработку данных, вы также можете назначать значения посредством инициализации структуры, а не члена за раз, например,
std::vector<std::vector<Struct>> matrix; /* declare matrix */
for (int i = 0; i < ROWS; i++) { /* loop ROWS times */
std::vector<Struct> v; /* declare vector of Struct */
for (int j = 0; j < COLS; j++) { /* loop COLS times */
Struct s = { 1, '*', i, j }; /* initialize struct */
v.push_back (s); /* push_back to vector */
}
matrix.push_back(v); /* push back to matrix */
}
Оборачивая это в кратком примере, вы могли бы сделать что-топохож на:
#include <iostream>
#include <vector>
#define ROWS 10
#define COLS ROWS
struct Struct {
bool check;
char display;
int x,y;
};
int main (void) {
std::vector<std::vector<Struct>> matrix; /* declare matrix */
for (int i = 0; i < ROWS; i++) { /* loop ROWS times */
std::vector<Struct> v; /* declare vector of Struct */
for (int j = 0; j < COLS; j++) { /* loop COLS times */
Struct s = { 1, '*', i, j }; /* initialize struct */
v.push_back (s); /* push_back to vector */
}
matrix.push_back(v); /* push back to matrix */
}
for (auto& i : matrix) { /* auto-range loop over matrix */
for (auto& j : i) /* auto-range loop over vectors */
std::cout << j.x << ',' << j.y << " check: " << j.check <<
" display: '" << j.display << "'\n";
std::cout << '\n'; /* tidy up with newline between vectors */
}
}
Пример использования / вывода
$ ./bin/vect2d_struct
0,0 check: 1 display: '*'
0,1 check: 1 display: '*'
0,2 check: 1 display: '*'
0,3 check: 1 display: '*'
0,4 check: 1 display: '*'
0,5 check: 1 display: '*'
0,6 check: 1 display: '*'
0,7 check: 1 display: '*'
0,8 check: 1 display: '*'
0,9 check: 1 display: '*'
1,0 check: 1 display: '*'
1,1 check: 1 display: '*'
1,2 check: 1 display: '*'
1,3 check: 1 display: '*'
1,4 check: 1 display: '*'
... <snip>
8,5 check: 1 display: '*'
8,6 check: 1 display: '*'
8,7 check: 1 display: '*'
8,8 check: 1 display: '*'
8,9 check: 1 display: '*'
9,0 check: 1 display: '*'
9,1 check: 1 display: '*'
9,2 check: 1 display: '*'
9,3 check: 1 display: '*'
9,4 check: 1 display: '*'
9,5 check: 1 display: '*'
9,6 check: 1 display: '*'
9,7 check: 1 display: '*'
9,8 check: 1 display: '*'
9,9 check: 1 display: '*'
Просмотрите все и дайте мне знать, если это то, что вы хотели, и если у вас естьлюбые дальнейшие вопросы.