static void fill_random(integer_book_t& book, T a, T b) {
if (a > b) swap(a, b);
uniform_int_distribution uid(a, b);
mt19937 gen{ random_device()() };
for (auto& table : book) {
for (auto& record : table) {
for (auto& value : record) {
value = uid(gen);
}
}
}
}
static void show(const integer_book_t& book, const streamsize w) {
for (auto& table : book) {
for (auto& record : table) {
for (auto& value : record) {
cout
Да, вполне верно. В большинстве языков, включая C++, медленнее всего меняется самый левый индекс, а быстрее всего - самый правый. Так что вложенность твоих циклов сделана правильно.
Но вот использование имён переменных x, y, z на мой взгляд не точно.
Просто представь 1-, 2-, 3-мерные декартовы координаты: x - номер позиции в векторе, y - номер вектора в матрице, z - номер матрицы в 3-мерном массиве.
Так что при использовании переменных x, y, z более логичным будет: arr[z][y][x].