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:
vektor < Class > Lista;
bool sprawdz( x ) { vector < Class >::iterator it = Lista.begin(); if( x == ?? ) return true; }
|
|
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. |
|
ptaq Temat założony przez niniejszego użytkownika |
» 2012-02-18 14:17:32 oto kod :)
#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(); 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; }
|
|
DejaVu |
» 2012-02-18 14:23:33 bool ListaWizyt::Sprawdz( string x ) { for( vector < Wizyta >::iterator it = Lista.begin(); it != Lista.end(); ++it ) if( x == * it ) return true; return false; } |
|
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> >]()' |
|
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:
std::string x; Wizyta y; if( x == y ) { }
Przecież to są różne typy danych :) |
|
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 |
|
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ąć. |
|
« 1 » |