Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

vector jako typ danych w funkcji

Ostatnio zmodyfikowano 2013-09-04 18:54
Autor Wiadomość
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 :
C/C++
#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]
P-91536
pekfos
» 2013-09-04 18:15:00
Musisz podawać typy obiektów w std::vector.
P-91539
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 );
P-91540
pekfos
» 2013-09-04 18:37:08
następuje tedy tzw. specjalizacja szablonu
Konkretyzacja. Specjalizacja to zupełnie co innego.
P-91542
wiewir1107
Temat założony przez niniejszego użytkownika
» 2013-09-04 18:54:25
Dzięki wielkie :D
P-91543
« 1 »
  Strona 1 z 1