Вопрос Верно ли мое представление о трехмерных массивах в c++?

Регистрация
4 Дек 2013
Сообщения
90
Репутация
10
Спасибо
1
Монет
0
#include

#include

#include



using namespace std;



int main()

{

setlocale(LC_ALL, "ru");

srand(time(NULL));



int zindex, yindex, xindex;

cout > zindex;

cout > yindex;

cout > xindex;

cout
 
Рекомендую более безопасный подход для реализации. #include
#include
#include
#include

using namespace std;
using T = int;
using record_t = vector;
using table_t = vector;
using integer_book_t = vector;

static size_t length(const char* prompt) {
static constexpr streamsize buffer = 0x1000;
size_t value = 0;
while (!value) {
cout > value;
cin.ignore(buffer, '\n');
}
return value;
}

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].
 
просто задебажь код, а также не забудь одно: массив в массиве из массива = трехмерный массив
 
Назад
Сверху