Danh mục

LẬP TRÌNH C nâng cao -BÀI 11 – CÁC BỘ LƯU TRỮ LIÊN KẾT

Số trang: 6      Loại file: pdf      Dung lượng: 137.24 KB      Lượt xem: 15      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

BÀI 11 – ASSOCIATIVE CONTAINER (CÁC BỘ LƯU TRỮ LIÊN KẾT)Bao gồm map (ánh xạ) multimap (đa ánh xạ) set (tập hợp) multiset (đa tập hợp) Sự khác nhau giữa các associative container và sequential container ở một điểm: -các sequential container lưu trữ các phần tử (gọi là các value) và các value này được truy xuất tuần tự theo vị trí của chúng trong bộ lưu trữ -các associative container lưu trữ các phần tử (gọi là các value) và các khóa (gọi là các key) ......
Nội dung trích xuất từ tài liệu:
LẬP TRÌNH C nâng cao -BÀI 11 – CÁC BỘ LƯU TRỮ LIÊN KẾT LẬP TRÌNH C/C++ NÂNG CAOYêu cầu trước khi đọc: học xong Lập trình C/C++ căn bản BÀI 11 – ASSOCIATIVE CONTAINER (CÁC BỘ LƯU TRỮ LIÊN KẾT)Bao gồm map (ánh xạ) multimap (đa ánh xạ) set (tập hợp) multiset (đa tậphợp)Sự khác nhau giữa các associative container và sequential container ở mộtđiểm:-các sequential container lưu trữ các phần tử (gọi là các value) và các valuenày được truy xuất tuần tự theo vị trí của chúng trongbộ lưu trữ-các associative container lưu trữ các phần tử (gọi là các value) và các khóa(gọi là các key) liên kết với các value và các value nàyđược truy xuất theo các key mà chúng có liên kếtMapCODE#includemap ánh xạ từ một char* đến một intmap mapInt;mapInt[one] = 1;cout};typedef map MP;typedef MP::iterator MPI;typedef MP::const_iterator MPCI;typedef MP::value_type MPVT;void display(const MP& mp){for(MPCI i=mp.begin();i!=mp.end();++i) coutDùng comparator để so sánhCODEclass comparePerson{public:bool operator()(Person p1,Person p2){return p1.name.compare(p2.name);}};typedef map MAP;MAP pMap;Person p=new Person(...);MAP::iterator i=pMap.find(d);if(i==pMap.end()) pMap.insert(MAP::value_type(d,1));Dùng comparator để sắp xếpCODEclass comparePerson{public:bool operator()(const Person& p1,const Person& p2){return p1.name.compare(p2.name);}};typedef map MP;MP mapPerson;Person p(Viet);mapPerson.insert(pair(one,Person(Nam)));mapPerson.insert(pair(two,Person(Viet)));mapPerson.insert(pair(three,Person(An)));display(mapPerson);Bạn lưu ý là tất cả các asociative container đều có xây dựng sẵn comparatormặc định là less (trong thư viện functional)Nghĩa là khi bạn khai báoCODEmap mapInt;thực ra làCODEmap mapInt;Ví dụCODEtypedef map MI;typedef map::iterator MII;MI m;m[c] = 1;m[b] = 2;m[a] = 3;for(MII i=m.begin();i!=m.end();++i)coutp.sort(AgeSort());//using sort with comparatorfor(LP::const_iterator i=p.begin();i!=p.end();++i) coutmultisetmultiset cũng giống set ngoại trừ một điều, mỗi key có thể ánh xạ đến nhiềuhơn một value, nói cách khác là nhiều value trongmultiset có chung một keyBạn có thể thắc mắc điều này chẳng có ý nghĩa gì, vì trong set thì key cũngchính là value, Không, chúng có khác đấy, thử xemnhé:CODE#includeset s;s.insert(1);s.insert(1);for(set::iterator i=s.begin();i!=s.end();++i) cout

Tài liệu được xem nhiều: