Трёхмерный std::veсtor

352
20 февраля 2017, 17:28

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

  • первый индекс задаёт количество векторов<векторов<<>>
  • второй - количество ячеек в "первом" вложенном векторе
  • третий - количество ячеек конечного (вложенного "во второй") вектора.

В первую очередь хотелось бы понять, как обращаться к вложенным элементам. + весь этот вектор надо как-то передавать в функции не копируя, а напрямую, т.к. в таком виде удобно хранить (в контексте моей задачи) данные.

Answer 1

Так устроит?...

using vector3d = vector<vector<vector<int>>>;
// Передача по ссылке копирования не вызывает
void out(const vector3d& v)
{
    for(int i = 0; i < v.size(); ++i)
    {
        for(int j = 0; j < v[i].size(); ++j)
        {
            for(int k = 0; k < v[i][j].size(); ++k)
                cout << v[i][j][k] << " ";
            cout << endl;
        }
        cout << endl << endl << endl;
    }
}

int main(int argc, const char * argv[])
{
    int n1 = 2, n2 = 3, n3 = 5;
    vector3d v(n1, vector<vector<int>>(n2, vector<int>(n3, 0)));
    for(int i = 0; i < n1; ++i)
    for(int j = 0; j < n2; ++j)
    for(int k = 0; k < n3; ++k)
        v[i][j][k] = (i+1)*100 + (j+1)*10 + k+1;
    out(v);
}

Тут есть и тип, и обращение, и передача в функцию. Сделал int для простоты.

READ ALSO
SQL составной Primary key и Foreign key

SQL составной Primary key и Foreign key

Имеется БД с двумя таблицами

340
составить SQL запрос из двух таблиц

составить SQL запрос из двух таблиц

Достаточно распространенный способ хранения теговЕсть две таблицы: tags (хранит теги) и tags_relations (хранит связи тегов с другими сущностями) Каким...

303
Как поменять цвет границы одной стороны у textview?

Как поменять цвет границы одной стороны у textview?

Как поменять цвет границы одной стороны у textview ?

311