Nowicjusz Temat założony przez niniejszego użytkownika |
Funkcja przyjmujaca dowolna liczbe parametrow » 2013-03-07 03:45:04 Czesc czy wiecie moze jak napisac funkcje ktora przyjmuje n parametrow, moge podac np: fun( 1, 2, 3, 4, 5 ); fun( 1 ); fun( 1, 2, 3, 5, 28, 7, 8, 9 );
|
|
xevuel |
» 2013-03-07 06:49:32 |
|
Monika90 |
» 2013-03-07 20:12:25 A w C++ masz do tego Variadic Templates albo std::initializer_list<int> |
|
crash |
» 2013-03-08 18:57:38 Monika90@ to o czym napisałaś jest w najnowszym standardzie, więc najnowsze kompiladło jest do tego potrzebne. Tak tylko wspominam. Osobiście używam http://edu.pjwstk.edu.pl/wyklady/pro/scb/PRG2CPP_files/node68.htmlSry za brak oznaczenia jako link ale wiecznie tego nie pamiętam, jak się w link zamienia ;p PS: Google -> C++ zmienna lista argumentów |
|
Elaine |
» 2013-03-09 15:04:59 Monika90@ to o czym napisałaś jest w najnowszym standardzie, więc najnowsze kompiladło jest do tego potrzebne. |
Bez przesady, variadic templates były w GCC 4.3, czyli kompilatorze z 2008, obecnie mamy 2013 (i GCC 4.8, które na dniach powinno wejść w fazę RC). |
|
Nowicjusz Temat założony przez niniejszego użytkownika |
» 2013-03-09 16:24:51 tego Variadic Templates mi nie znajduje visual 2012
@Crash a mozesz mi napisac czy da sie jakos sprawdzic rozmiar tych danych albo chociaz sprawdzic czy aktualny element nie jest ostatnim ? |
|
usmiech |
» 2013-03-09 17:18:06 Nie wiem do czego potrzebujesz funkcje akceptjaca kazda ilosc argumentow. Byc moze do obliczania sredniej. Rozumiem, ze nie wiesz jak wiele argumentow bedzie przekazanych do funkcji. Jedna z drog do osiagniecia tego moze byc uzycie wskaznikow do tablicy, ale druga droga to uzycie jednej z bibliotek C++ , ktora 'akceptuje' funkcje ze zmienna liczba argumentow, albo raczej funkcje bez okreslonego zbioru argumentow. Mozesz uzyc plik cstdarg w headersie /#include <cstdarg>/. Poniewaz funkja deklarowana jest z nieogrsanoczona lista argumentow to w miejscu ostatniego argumentu wstawia sie '...'. Wiec przykladowa func(int x, ...) powie kompilatorowi, ze funkcja ma nieogranoczona ilosc argumentow /przynajmniej jeden, ktory rowna sie x/. Pozdrawiam :) Oki, przykladowy kod na obliczanie sredniej #include "stdafx.h" #include <cstdarg> #include <iostream>
using namespace std;
double srednia( int liczba,...) { va_list argumenty; double suma = 0; va_start( argumenty, liczba ); for( int x = 0; x < liczba; x++ ) suma += va_arg( argumenty, double ); va_end( argumenty ); return suma / liczba; int main() { cout << srednia( 3, 18.5, 142.8, 15.4 ) << endl; cout << srednia( 10, 3.5, 12.2, 1.8, 8.5, 12.4, 11.0, 4.8, 8.2, 58.0, 148.2 ) << endl; }
|
|
Nowicjusz Temat założony przez niniejszego użytkownika |
» 2013-03-09 17:23:29 dzieki, ale zaproponowales to co @crash :D, probowalem juz tego ale nie wiem jak sprawdzic ile agrumentow przeslalismy. Ale skoro nigdy wczesniej tego nie widzialem to moze faktycznie zadko kiedy sie uzywa, moze faktycznie przesle za pomoca tablicy :D Ale tak z czystej ciekawosci chcialbym wiedziec czy jednak da sie jakos sprawdzic ile argumentow sie przeslalo |
|
« 1 » 2 |