Wywołanie funkcji z Vector
Ostatnio zmodyfikowano 2017-05-27 09:43
wokub Temat założony przez niniejszego użytkownika |
» 2017-05-26 20:41:57 Cóż, zostaje pozostać przy wersji z C++98. Swoją drogą dziwne, że wcześniejsza wersja łatwiej sobie radzi z tym problemem, ale cóż. Pewnie wyjątek od reguły. |
|
carlosmay |
» 2017-05-26 21:54:59 Cóż, zostaje pozostać przy wersji z C++98. |
Cofanie się do starożytności, aby ogarnąć działanie koła nie ma większego sensu. Korzystasz z STL - minimum to C++11. |
|
jankowalski25 |
» 2017-05-26 21:55:04 Dlaczego myślisz, że C++98 nie pozwala na przeciążanie operatorów? Przecież możesz napisać std::cout << 5; i zostanie użyty operator << . Poza tym, możesz przecież napisać własny przeciążony operator, który wypisze zawartość wektora. |
|
czaffik |
» 2017-05-26 22:01:48 1. Funkcję zerującą można zrobić na różne sposoby, akurat zrobiłem tak że przyjmuje wartość przez referencję (więc funkcja zmodyfikuje wektor), ale możesz zrobić też tak że przyjmie przez wartość i zwróci wyzerowany wektor, sam próbowałeś przyjąć i zwrócić, tyle że funkcja była void! 2. Rezerwujesz wektor na 2 elementy a potem dodajesz dwa kolejne, w konsekwencji masz 4 elementy w wektorze, dwa pierwsze zapewne zero, chociaż nie pamiętam dokładnie czym są wypełniane wartości wektora po utworzeniu. #include <iostream> #include <vector> #include <climits> #include <algorithm>
using namespace std;
void zeruj( vector < double > & v ) { fill( v.begin(), v.end(), 0 ); }
ostream & operator <<( ostream & out, const vector < double > & v ) { for( const auto & i: v ) out << i << " "; out << "\n"; return out; }
int main() { vector < double > wektor; wektor.push_back( 2.0 ); wektor.push_back( 5.0 ); for( const auto & w: wektor ) cout << w << " "; cout << "\n"; zeruj( wektor ); for( const auto & w: wektor ) cout << w << " "; cout << "\n"; cout << wektor; return 0; }
|
|
wokub Temat założony przez niniejszego użytkownika |
» 2017-05-26 22:39:07 Co prawda, wiem co tutaj się dzieje, ale sam bym na to nie wpadł :D |
|
pekfos |
» 2017-05-27 00:56:10 Korzystasz z STL - minimum to C++11. |
Jak to należy rozumieć? Wcześniej STL nie istniał? |
|
carlosmay |
» 2017-05-27 09:43:54 Starać się używać możliwie najnowszego standardu. Minimum C++11. |
|
1 « 2 » |