![]() |
|
|
![]()
|
|
| Iwan777 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.5.2007 Репутация: нет Всего: нет |
Мне необходимо заполнить двумерный динамический массив, созданный с помощью vector. Этот массив заполняется из StringGrid, размер которого также задаётся динамически, в зависимости от того, сколько значений занесёт пользователь в поля Edit1 и Edit2.
Задаю глобально 3 динамических массива
заполняю вектора cena, resurs и задаю размер StringGrid
Пытаюсь занести значения в двумерный вектор из StringGrid, после заполнения его данными
При компиляции программы Builder не ругается, но после того, как заполню вектора cena, resurs, задам размер StringGrid, заполню его данными, после этого нажимаю кнопку N2 и выскакивает ошибка, на адреса что-то ругается. Что я сделал не так, подскажите пожалуйста. |
||||||
|
|||||||
| Fazil6 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
нельзя заполнять вектор оператором []. Нужно белать что-то вроде
|
||||
|
|||||
| SergKO |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 14.3.2005 Репутация: нет Всего: 20 |
Заполнять можно, следует сначала сделать resize.
Вот только не рекомендуется. Все обращения к элементам следует производить через оператор at(). |
|||
|
||||
| Iwan777 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.5.2007 Репутация: нет Всего: нет |
Всем большое спасибо!!!Заработало!
заполняю вектор так, как посоветовал Fazil6:
для проверки вывожу в текстовый файл следующим образом:
Всё работает, как нужно. |
||||
|
|||||
| SergKO |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 14.3.2005 Репутация: нет Всего: 20 |
Для перебора элементов лучше воспользоваться итератором. Ниже пример. На заполнение не обращайте внимания, просто, как вариант.
|
|||
|
||||
| Iwan777 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.5.2007 Репутация: нет Всего: нет |
Почему через итератор лучше? Объясните пожалуйста.
И какие отличия между такими записями: rashod.at(i).at(j) и rashod[i][j], на мой взгляд с квдратными скобками удобнее, хотя бы потому, что меньше писанины. Или я не прав? |
|||
|
||||
| Fazil6 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
at() контролирует выход за границы. При обращении по неправильному индексу получишь исключение, при [] обычно никаких проверок не делается(стандарт не требует обязательной проверки) как при работе с массивом ничем особенным. Дело вкуса. Обычно, когда имеется ввиду "лучше итератор", то имеется ввиду, что конструкция
воспринимается проще и понятнее чем цикл for(кстати не припомню чтобы когда-нибудь встречал итераторы в цикле for как здесь http://forum.vingrad.ru/index.php?showtopi...&p=1148068) Так что не переживай, твой способ вполне нормальный. Если уж говорить о STLstyle и как лучше, то вместо циклов стоило бы применять алгоритмы и функторы |
||||
|
|||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |