![]() |
|
Модераторы: bsa |
![]()
|
|
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Как в функцию вида func(size_t n, ...) передать неизвестное на момент компиляции число аргументов? Я кроме ассемблерных вставок ни до чего не додумался.
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Нужно интерпретированное выражение вида
кол-во тип1 значение1 тип2 значение2 ... типn значениеn передать в функцию. Т.е. на момент компилирования программы, мы не знаем каким будет это интерпретированное выражение поэтому не можем написать func(size_t n, тип1, значение1, тип2, значени2, ... типn, значениеn), т.к. n неизветсно. Если передавать вторым параметром структуру, то тоже непонятно как, т.к. размер структуры должен быть тоже заранее известен. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Думаю еще вариант через vector, но он вроде содержит доп. поля.
Добавлено через 49 секунд azesmcar, ты меня опередил. Вроде контейнеры содержат доп. информацию. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Мне нужно именно через такую функцию func(size_t n, ...).
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Имею ввиду, что если передать
func(size_t n, vector<T>), то в функцию передастся мусор, кот. содержится в векторе помимо самих данных. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
1. какой еще мусор? откуда он там появился? 2. пусть даже так, почему тебя это волнует? 3. кто мешает написать свой контейнер, или в крайнем случае запихнуть все в обыкновенный массив (заметь, я сказал не вектор а контейнер)? |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Почему.
На самом деле контейнеры вообще никак нельзя передавать иначе я вернусь к тому, откуда пришел. Дело в том, что когда я передавал контейнеры, это занимало много времени в момент интерпретации при копировании их из одного места в другое. Поэтому я решил передавать напрямую через стек. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
А зачем копировал? Передавай по ссылке. И потом какая разница что копировать? Я не понимаю твоей проблемы, описывай подробнее. Это сообщение отредактировал(а) azesmcar - 3.6.2011, 21:18 |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Я передавал по ссылке.
Например есть набор разнородных данных, которые надо вытащить и передать в функцию. Я делал как. Создавал вектор, складывая туда все эти нужные мне данные, и потом его передавал по ссылке. Но это жрет много вычислительных ресурсов при больших вычислениях. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
azesmcar, из другого контейнера.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |