![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
decembrist |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 1.4.2004 Репутация: нет Всего: нет |
Как задать массив, если его длина определяется в процессе вычисленний программы? В данном случае vector не подходит
![]() |
|||
|
||||
Borisff2003 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 26.2.2004 Где: г. Уфа Репутация: 1 Всего: 1 |
--------------------
Лень, двигатель прогресса |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
А почему не подходит vector?
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
decembrist |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 1.4.2004 Репутация: нет Всего: нет |
Я использую ф-цию setValues(starting index, member of values, pointer to array of values)
Например если
то
то есть я не могу подставить в качестве третьего аргумента vector. Его надо как то перевести в array. ![]() |
||||
|
|||||
Borisff2003 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 26.2.2004 Где: г. Уфа Репутация: 1 Всего: 1 |
А вот такое работает
--------------------
Лень, двигатель прогресса |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Достаточно передать итератор на первый элемент. А вообще, раз такой вопрос возник, значит не слишком хорошо STL освоил - книги в руки и просвещаться ![]() Добавлено @ 14:16 Borisff2003 В твоем примере вызываемая функция ничего не знает о том, сколько элементов в контейнере. Кроме того, происходит явное преобразование типов из итератора в (int*), по данному стандарту оно работает, но ведь иераторами не просто так пользуются ![]() |
|||
|
||||
decembrist |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 1.4.2004 Репутация: нет Всего: нет |
ссылки есть какие-нибудь? Нет у меня подходящих книг кроме Страуструпа |
|||
|
||||
Dark Elf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 576 Регистрация: 26.12.2003 Где: Брисбен Репутация: 9 Всего: 10 |
ИМХО, Страуструп как раз для этого и подходит.
А ещё на RSDN.RU есть описание STL (в CHM-формате) |
|||
|
||||
Borisff2003 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 26.2.2004 Где: г. Уфа Репутация: 1 Всего: 1 |
DENNN
Ну так я пример давал, decembrist надо связать старый код и STL так что думаю у него функция получще выглядит, да и насколько я понимаю, vector так и описан в стандарте, чтобы быть полностью совместимым с массивами в классическом виде. Тут либо преобразовывать, либо описание функции немного переделать(если код есть) --------------------
Лень, двигатель прогресса |
|||
|
||||
decembrist |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 1.4.2004 Репутация: нет Всего: нет |
ф-ция стандартная. А преобразовать -то как можно? |
|||
|
||||
Adil' |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
decembrist, я бы на твоем месте сначала разобрался с указателями, т. е. сделал бы как
Borisff2003 (сообщение №2) предложил. Не зная указателей за STL хвататься - не хорошо как то. Вот освоишься с ними более-менее, тогда можно и за STL взяться (если захочешь ![]() З.Ы. Это мое ИМХО. -------------------- Удачи |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
В современной исправленной редакции(изменение от сетнября 2002 года ISO/IEC 14882:2002(3)) стандарт требует, что бы vector выполнял следующие условия
&v[n] == &v[0] + n for all 0<= n < v.size() То есть элементы вектора должны располагаться в памяти непрерывно. Таким образом преобразование вектора к обычному массиву производится получением адреса на первый элемент вектора и если используемая редакция STL отвечает стандарту, то вполне справдлив следущей код
Кстати в ранее действующющей редакции стандарта ISO/IEC 14882:1998(E) это никак не регламентировалось, и такой код в различных реализациях STL мого приводить к ошибке и соответственно такое использование рассматривалась как грубейшая ошибка -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
decembrist |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 1.4.2004 Репутация: нет Всего: нет |
Большое всем спасибо!
![]() ![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
2 decembrist,
Вам сюда: Об STL простыми словами (C++ FAQ) -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |