![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
У меня трехмерный массив
std::vector<std::vector<std::vector<TShareElement> > > Listing; То есть обращение к нему будет типа Listing[0][0][0]; Мне надо его заполнить. Насколько я знаю, массим вектора можно заполнить либо push_back(TShareElement()) затем listing[0][0][0]=ShareElement; либо сразу push_back(ShareElement); А вот как мне поступить в случае с трехмерным массивом? for (int a=0;a<10;a++) for (int b=0;b<10;b++) for (int c=0;c<10;c++) Listing[a][b][c]=ShareElement; Но перед этим надо вставлять push_back вначале каждого цикла? а если в цикле С окажется что добавлять ничего не надо? Нельзя ли сразу одной командой как-нибудь добалвять елементы в самом внутреннем цикле? Или же лучше заменить структуру на typedef std::vector<TShareElement> TSharedFolder; typedef std::vector<TSharedFolder> TSharesOnServer; typedef std::vector<TSharesOnServer> TSharesOnNet ; TSharesOnNet SharesOnNet; |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
если размерности известны сразу, можно сразу установить их:
да и весь этот неудобный код можно запихнуть в функцию или вообще трехмерный массив оформить, как класс, чтобы удобно было менять любую размерность + , возможно, еще какие-нибудь функции... -------------------- qqq |
|||
|
||||
| Dark Elf |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 576 Регистрация: 26.12.2003 Где: Брисбен Репутация: 9 Всего: 10 |
||||
|
||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
нет, размерность не известна...
Добавлено @ 14:10 ЧТо-то как-то не хочется использовать что-то малоизвестное. Лучше уж вектор. |
|||
|
||||
| Dark Elf |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 576 Регистрация: 26.12.2003 Где: Брисбен Репутация: 9 Всего: 10 |
Те времена когда boost был чем-то малоизвестным давно прошли. Более того сейчас это де-факто стандарт как и STL (где определён vector). |
|||
|
||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Тем не менее, я хочу решение описанной проблемы для вектора.
|
|||
|
||||
| maxim1000 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
можно написать функции изменения размерностей:
1-я
2-я
3-я
Добавлено @ 14:32 и вызывать их, когда надо изменить размерность... Добавлено @ 14:34 только еще надо в этих циклах подробнее рассмотреть случай с увеличением размерности: например, при увеличении второй размерности, в массив будут добавляться одномерные вектора, которым тоже нужно установить размер, как у старых... -------------------- qqq |
||||||
|
|||||||
| =Женек= |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Сделал вот так
Объявление переменных:
Запись в массив:
Чтение из массива
ЖДУ КРИТИКИ Добавлено @ 14:54 Все замечательно работает, и структура получиласль удобочитаемая. |
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |