|
|
|
Помогите з iterator-ом
|
|||
|---|---|---|---|
|
#18+
У меня есть два файла Reis.txt и Vart.txt.Мне надо считать дание с файла и их асоциировать. Поиск осуществляєтса по имен-ключу. Почему если я считиваю дание в масив то при поиске мне кажет что такой записи нет, а когда записиваю но не с файла а поочередно типа:(m.insert(pair <reis, vart> (reis("Lv-Kiev"),vart("10$")))- то поиск осусчествляєтса. Как здалать стоб вариант з файлом работал!! #include <iostream> #include <map> #include <cstring> #include <conio.h> using namespace std; const int size=5; // клас для сохранения имен-ключей class reis { char str[20]; public: reis() {strcpy(str, "");} reis(char *s) {strcpy(str, s);} char *get() {return str;} }; // для объектів класу name треба // визначити оператор < (менше) bool operator<(reis a, reis b) { return strcmp(a.get(), b.get()) < 0; } // клас для сохранения номерів-значень class vart { char str[20]; public: vart() {strcmp(str, "");} vart(char *s) {strcpy(str, s);} char *get() {return str;} }; typedef map<reis, vart, less<reis> > psevdo; // друк одной пари ключ/значення template <class First, class Second> ostream& operator<<(ostream& out, const pair<First,Second> &pp){ cout <<"Reis: "<< pp.first.get() << " Vartist: " << pp.second.get(); return out; } int main() { int i=0; FILE *R,*V; char rs[size][20],vs[size][20]; R=fopen("Reis.txt","r"); V=fopen("Vart.txt","r"); map<reis, vart, less<reis> > m; //НЕ РАБОТАЕТ /*do { fgets (rs ,20,R); fgets (vs,20,V); if(feof(R)) break; if(feof(V)) break; rs[strlen(rs)-1]='\0'; vs[strlen(vs)-1]='\0'; m.insert(pair <reis, vart> (reis(rs),vart(vs))); i++; } while(true); fclose(R); fclose(V);*/ // инициализация асоциативного списку // именами і номерами //РАБОТАЕТ m.insert(pair <reis, vart> (reis("Lv-Kiev"),vart("10$"))); m.insert(pair <reis, vart> (reis("Lv-London"), vart("100$"))); m.insert(pair <reis, vart> (reis("Lv-Odessa"), vart("50$"))); m.insert(pair<reis, vart> (reis("Lv-Greece"), vart("200"))); //ввод имени ключа char str[20]; cout << "Input name: "; cin >> str; map <reis, vart, less<reis> >::iterator p; // поиск номера за именем-ключем p = m.find (reis(str)); if (p != m.end()) cout << "Znachennia: " << *p; else cout << "Imeni v asociatuvnomy spisky nemae\n"; getch(); return 0; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 23:56 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33737159&tid=2031236]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 223ms |
| total: | 388ms |

| 0 / 0 |
