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

Pobieranie informacji z kontenera std::vector

Ostatnio zmodyfikowano 2012-02-18 20:31
Autor Wiadomość
ptaq
Temat założony przez niniejszego użytkownika
Pobieranie informacji z kontenera std::vector
» 2012-02-18 13:53:50
witam, chce porównać wartość przekazywaną przez funkcję ze skladową obiektu przechowywanego w kontenerze
i nie bardzo wiem jak to zrobic ? pomoże ktoś ? ;>
Mam coś takiego:
C/C++
vektor < Class > Lista;

bool sprawdz( x )
{
    vector < Class >::iterator it = Lista.begin();
    if( x == ?? )
         return true;
   
}
P-50932
DejaVu
» 2012-02-18 13:55:20
1. Wklej kod, który jest poprawny.
2. Rozwiązanie jest proste, ale najpierw cały kod poza tą 1 linijką musi być poprawny.
P-50934
ptaq
Temat założony przez niniejszego użytkownika
» 2012-02-18 14:17:32
oto kod :)
C/C++
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
#include<conio.h>

using namespace std;


class Wizyta
{
public:
    int ID_Wizyty;
    string Data;
    string Godzina;
    friend ostream & operator <<( ostream & aaa, Wizyta & yyy );
};

class ListaWizyt
{
public:
    vector < Wizyta > Lista;
    void WgrajWizyty();
    void ZapiszWizyty();
    void DodajWizyte( Wizyta * );
    bool Sprawdz( string x );
};


ostream & operator <<( ostream & aaa, Wizyta & yyy )
{
   
    aaa << "ID_Wizyty: " << yyy.ID_Wizyty << endl;
    return aaa << "Data: " << yyy.Data << endl
    << "Godzina: " << yyy.Godzina << endl;
   
}


void ListaWizyt::DodajWizyte( Wizyta * wska )
{
    Lista.push_back( * wska );
    cout << Lista.back();
}

void ListaWizyt::ZapiszWizyty()
{
    ofstream fileOutput( "wizyty.txt", ios::app );
    if( fileOutput.is_open() )
         fileOutput << Lista.back();
   
}

void ListaWizyt::WgrajWizyty()
{
    Wizyta wizyta;
    ifstream fileInput( "wizyty.txt" );
    if( fileInput.is_open() )
    do
    {
        if( fileInput.eof() )
             break;
       
        fileInput.ignore( 11, ' ' );
        fileInput >> wizyta.ID_Wizyty;
        fileInput.ignore( 6, ' ' );
        getline( fileInput, wizyta.Data );
        fileInput.ignore( 7, ' ' );
        getline( fileInput, wizyta.Godzina );
        DodajWizyte( & wizyta );
        fileInput.ignore();
    } while( !fileInput.eof() );
   
}

bool ListaWizyt::Sprawdz( string x )
{
   
    vector < Wizyta >::iterator it_tab = Lista.begin();
    //           if( x == ?? )
    return true;
   
}


int main()
{
   
   
    Wizyta wizyta;
    ListaWizyt lista;
   
    cout << "podaj ID_wizyty;" << endl;
    cin >> wizyta.ID_Wizyty;
    cin.ignore();
    cout << "podaj date wizyty:" << endl;
    getline( cin, wizyta.Data );
    cout << "podaj godzine wizyty:" << endl;
    getline( cin, wizyta.Godzina );
    cout << endl;
   
   
    lista.DodajWizyte( & wizyta );
    lista.ZapiszWizyty();
    lista.WgrajWizyty();
    string x;
    cout << "podaj godzine, lub date";
    cin >> x;
    lista.Sprawdz( x );
   
   
    return 0;
}
P-50938
DejaVu
» 2012-02-18 14:23:33
C/C++
bool ListaWizyt::Sprawdz( string x )
{
   
    for( vector < Wizyta >::iterator it = Lista.begin(); it != Lista.end(); ++it )
    if( x == * it )
         return true;
   
    return false;
}
P-50939
ptaq
Temat założony przez niniejszego użytkownika
» 2012-02-18 14:39:03
teraz wywala taki bląd ;/
no match for 'operator==' in 'x == (&it)->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = Wizyta*, _Container = std::vector<Wizyta, std::allocator<Wizyta> >]()' 
P-50942
DejaVu
» 2012-02-18 15:26:21
Uhm... nie zwróciłem uwagi na to, że masz niezgodność typów. Jak chcesz porównać coś takiego:
C/C++
std::string x;
Wizyta y;
if( x == y )
{
    //...
}
Przecież to są różne typy danych :)
P-50946
ptaq
Temat założony przez niniejszego użytkownika
» 2012-02-18 15:57:53
no wiem ze sie nie da, tylko nie mam pomysly jak to inaczej rozwiazać? może jakaś opdpowiedz :D
P-50948
DejaVu
» 2012-02-18 20:31:27
Cóż... jeżeli nie potrafisz rozwiązać problemu który przedstawiłem to znaczy, że po pierwsze nie rozumiesz co piszesz, a po drugie nie wiesz co chcesz osiągnąć.
P-50952
« 1 »
  Strona 1 z 1