Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengekalkan Susunan Sisipan dalam Peta Sambil Mengekalkan Carian Yang Cekap?
Dalam situasi di mana susunan sisipan adalah penting, bergantung semata-mata pada std::map mungkin tidak mencukupi. Jika mengekalkan susunan sisipan adalah keutamaan, terdapat pendekatan alternatif untuk dipertimbangkan.
Satu pilihan melibatkan menukar kandungan peta menjadi std::vector sebelum melelaran dan mencetak nilainya. Dengan memanfaatkan functor yang sesuai, anda boleh menggunakan std::sort untuk menyusun elemen berdasarkan tertib sisipannya.
Walau bagaimanapun, jika carian pantas adalah penting (mis., 10 juta kali), menggunakan vektor mungkin memperkenalkan prestasi kebimbangan. Untuk senario sedemikian, pustaka rangsangan::multi_index menawarkan penyelesaian yang menggabungkan kecekapan peta dengan fleksibiliti berbilang indeks.
Menggunakan boost::multi_index:
Pustaka ini membolehkan anda menubuhkan berbilang indeks untuk setiap bekas. Dalam kes khusus ini, anda boleh mentakrifkan struct value_t dengan ahli rentetan dan int, dan menggunakan dua indeks:
Anda kemudiannya boleh membuat instantiate multi_index_container seperti:
struct value_t { string s; int i; }; struct string_tag {}; typedef multi_index_container< value_t, indexed_by< random_access<>, // insertion order hashed_unique<tag<string_tag>, member<value_t, string, &value_t::s>> > > values_t;
Pendekatan ini memberikan carian yang cekap sambil mengekalkan susunan sisipan apabila melelaran bekas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Susunan Sisipan dalam Peta Sambil Mengekalkan Carian Yang Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!