0 / 0 / 0
Регистрация: 15.06.2014
Сообщений: 49
|
|
1 | |
Подскажите пример функции с переменным числом параметров, в том числе 005.07.2014, 19:12. Показов 1915. Ответов 23
Метки нет (Все метки)
Здравствуйте.
Подскажите, пожалуйста, пример функции на С++, которая имела бы переменное количество параметров, в том числе 0. Функции с переменным количеством параметров на С++ есть, знаю. А вот такие, чтобы в них было переменное количество параметров и в то же время можно было бы вызывать функцию без параметра не встречал. Подскажите, пожалуйста.
0
|
05.07.2014, 19:12 | |
Ответы с готовыми решениями:
23
Функции с переменным числом параметров «Функции с переменным числом параметров» Функции с переменным числом параметров Функции с переменным числом параметров |
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
05.07.2014, 19:22 | 2 |
LostDok, если ты имеешь ввиду функции с эллипсисом (вроде printf), то там в любом случае нужно каким то образом отдельно передавать количество аргументов, т.е. как минимум один параметр у такой функции будет.
Можно добавить перегрузку без аргументов. Можно шаблон функции с переменным количеством параметров.
0
|
385 / 279 / 478
Регистрация: 09.05.2014
Сообщений: 769
|
|
05.07.2014, 19:23 | 3 |
речь о перегрузке функции или о чем? О_о
0
|
0 / 0 / 0
Регистрация: 15.06.2014
Сообщений: 49
|
|
05.07.2014, 19:29 [ТС] | 4 |
Задание было поставлено так, как описано выше. Сам, если честно, до конца не понимаю о чем речь. Но что-то мне говорит, что не о перегрузке, потому как это было бы слишком просто. Имеется ввиду функция, которая может принимать от 0 до бесконечности параметров.
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
05.07.2014, 19:34 | 5 | |||||
2
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|||||||||||
05.07.2014, 19:40 | 6 | ||||||||||
LostDok, можно написать функцию с эллипсисом, которая будет принимать сколько угодно аргументов, но толку от нее не будет, т.к. не будет информации о количестве переданных параметров.
Пример с перегрузкой
С шаблоном ф-ии
2
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
05.07.2014, 19:49 | 7 |
не подскажете, как это в 6.0 впихнуть?
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
|
|
05.07.2014, 20:31 | 9 |
Tulosba, а разве в 6.0 нету int foo(int, ...) {?
0
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
05.07.2014, 20:47 | 10 |
Студия...значит можно поизвращаться и изобрести велосипед)
Например в функцию передавать адрес массива [адрес/тип], а количество определять по адрес==NULL_)
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
05.07.2014, 22:35 | 11 |
zss, если через variadic templates, то никак. Если через эллипсис, то конечно можно.
Добавлено через 1 минуту Retyrn0, массив подразумевает однотипные элементы. Иначе это уже кортеж, который без c++11 тоже не сделать нормально.
0
|
0 / 0 / 0
Регистрация: 15.06.2014
Сообщений: 49
|
|
05.07.2014, 22:38 [ТС] | 12 |
Всем спасибо. Думаю, вариант с эллипсисом подойдет. Раньше не знал что это. Пошел изучать.
0
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
||||||
05.07.2014, 22:59 | 13 | |||||
Порядок. И тип этого массива - структура:
В зависимости от значения TYPE, выполняем явное преобразование типов. Например, если type=3, то (char*)addr. Не вижу никаких препятствий.
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
05.07.2014, 23:13 | 14 |
Тогда переменную type надо хранить как void*, а не целое беззнаковое. Иначе будут проблемы.
а вообще для этих целей есть такие инструменты как полиморфизм, пересмотр архитектуры, шаблоны, RTTI в конце концов.
0
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
05.07.2014, 23:32 | 15 |
Проблем не будет, если только размер не совпадёт, но в стандартной архитектуре порядок, хотя на счёт void* согласен. Но я не утверждал о том, что именно такая структура, а пытался подать саму идею.
Зачем бить блоху кувалдой, если можно всё сделать проще? К тому же, хотя я не уверен, такой подход может оказаться быстрее(не знаю как выполняются аналогичные задачи с помощью ваших ссылок). В некотором смысле мой пример можно приписать к полиморфизму...низкоуровневому. Плюс - минус)
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
05.07.2014, 23:35 | 16 |
Retyrn0, ну шаблон-то точно будет не медленнее
0
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
06.07.2014, 00:50 | 17 |
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
06.07.2014, 00:59 | 18 |
Не будет он медленнее, шаблон функции это по сути генератор различных функций для различных параметров шаблона.
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
06.07.2014, 00:59 | 19 |
Retyrn0, если предоставишь свой вариант без шаблона, то можно будет потом сравнить на независимой площадке.
0
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
06.07.2014, 01:20 | 20 |
Ну да, шаблон быстрее, согласен. Но ведь вопрос не в том.
Зато мой способ динамический. Чего уж там, искусственный интеллект грядёт, с возможностью самосовершенствоваться и не только по принципу нейронных сетей - там только переменные, но ещё и функции эволюционировать будут А с другой стороны, человечество не изобретёт искусственный интеллект до тех пор, пока не научится пользоваться естественным Добавлено через 1 минуту Утешительное явление - крашенная блондинка
0
|
06.07.2014, 01:20 | |
06.07.2014, 01:20 | |
Помогаю со студенческими работами здесь
20
Функции с переменным числом параметров Функции с переменным числом параметров Функции с переменным числом параметров Функции с переменным числом параметров Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |