vector jako typ danych w funkcji
Ostatnio zmodyfikowano 2013-09-04 18:54
wiewir1107 Temat założony przez niniejszego użytkownika |
vector jako typ danych w funkcji » 2013-09-04 17:40:41 Witam, mam problem. Przy tym kodzie : #include <iostream> #include <vector> using namespace std;
void fix1( vector * vec1, int place ) { int x; int y; x = vec1[ place ]; y = vec1[ place + 1 ]; for( int i = place; i < vec1.size() / 2; i += 2 ) { vec1[ i ] = vec1[ i + 2 ]; vec1[ i + 1 ] = vec1[ i + 3 ]; } vec.pop_back(); vec.pop_back(); }
void spr( int x, int y, vector * vec ) { bool check = false; if( vec.size == 0 ) { vec[ 0 ] = x; vec[ 1 ] = y; } else { for( int i = 0; i < vec.size() / 2; i =+ 2 ) { if( x == vec[ i ] ) { if( y > vec[ i + 1 ] { vec[ i + 1 ] = y; } check = true; fix1( & vec, i ); } else if( x == vec[ i + 1 ] ) { vec[ i + 1 ] = y; check = true; fix1( & vec, i ); } else if( x > vec[ i ] && x < vec[ i + 1 ] ) { if( y > vec[ i + 1 ] { vec[ i + 1 ] = y; } check = true; fix1( & vec, i ); } else if( y == vec[ i ] ) { vec[ i ] = x; check = true; fix1( & vec, i ); } else if( y == vec[ i + 1 ] ) { if( x < vec[ i ] ) { vec[ i ] = x; } check = true; fix1( & vec, i ); } else if( y > vec[ i ] && y < vec[ i + 1 ] ) { if( x < vec[ i ] ) { vec[ i ] = x; } check = true; fix1( & vec, i ); } } if( check == false ) { vec[ vec.size() + 1 ] = x; vec[ vec.size() + 2 ] = y; } } int main() { vector < int > ciagi; int n, x, y; cin >> n; ciagi.reserve( n * 2 ); for( int i = 0; i < n; i++ ) { cin >> x >> y; spr( x, y, & ciagi ); } for( int i = 0; i < ciagi.size(); i++ ) { } return 0; } Wyskakują mi takie błędy : C:\Users\Dariusz\Documents\main.cpp|6|error: variable or field 'fix1' declared void| C:\Users\Dariusz\Documents\main.cpp|6|error: missing template arguments before '*' token| C:\Users\Dariusz\Documents\main.cpp|6|error: 'vec1' was not declared in this scope| C:\Users\Dariusz\Documents\main.cpp|6|error: expected primary-expression before 'int'| ||=== Build finished: 4 errors, 0 warnings (0 minutes, 0 seconds) ===| wiem, że kod ma jeszcze pare błędów, jest jeszcze nie skończony i na razie praktycznie nic nie robi ale nie mogę zrozumieć o co chodzi w tych błędach i nie chciałbym robić dalej jeśli się okaże, że i tak tego nie uruchomię. Wydaję mi się, że problem dotyczy vectora w funkcji jako typu danych, ponieważ, co dziwne, na innym kopie wyskoczyło mi więcej błędów, między innymi, że vector jest złym typem, czy coś takiego aczkolwiek wiele razy pisałem funkcje, które za parametry przyjmowały vectory i wszystko działało.[/i] |
|
pekfos |
» 2013-09-04 18:15:00 Musisz podawać typy obiektów w std::vector. |
|
b00rt00s |
» 2013-09-04 18:25:02 std:vector to szablon. Dopiero po podaniu argumentu szablonu staje się pełnoprawnym typem (następuje tedy tzw. specjalizacja szablonu). Deklaracja funkcji pobierającej vector może wyglądać np. tak: void nazwa_funkcji( std::vector < int > nazwa_zmiennej ); |
|
pekfos |
» 2013-09-04 18:37:08 następuje tedy tzw. specjalizacja szablonu |
Konkretyzacja. Specjalizacja to zupełnie co innego. |
|
wiewir1107 Temat założony przez niniejszego użytkownika |
» 2013-09-04 18:54:25 Dzięki wielkie :D |
|
« 1 » |