Mengekalkan Susunan Sisipan dalam std::map
Dalam senario di mana std::map
Satu penyelesaian yang berkesan ialah menggunakan gabungan std::map dan std::vector. Memandangkan peta memastikan carian berasaskan rentetan yang cekap, anda boleh menyalin kandungan peta ke dalam std::vector sebelum melakukan operasi isihan. Functor tersuai boleh digunakan untuk mentakrifkan logik pengisihan berdasarkan susunan sisipan.
Sebagai alternatif, perpustakaan Boost menawarkan penyelesaian berkuasa dengan boost::multi_index. Ini membolehkan pengindeksan berbilang bagi satu bekas. Dalam kes anda, struktur berikut boleh dilaksanakan:
struct value_t { std::string s; int i; }; struct string_tag {}; typedef multi_index_container< value_t, indexed_by< random_access<>, // index representing insertion order hashed_unique<tag<string_tag>, member<value_t, string, &value_t::s>> > > values_t;
Di sini, indeks random_access mengekalkan susunan sisipan manakala indeks hashed_unique memastikan pengecam rentetan unik untuk carian yang cekap. Pendekatan ini menyediakan kedua-dua carian yang cekap dan pemeliharaan susunan sisipan.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Susunan Sisipan dalam `std::map` Semasa Mengekalkan Carian Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!