Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengekalkan Susunan Sisipan dalam Peta dengan Cekap?

Bagaimanakah Saya Boleh Mengekalkan Susunan Sisipan dalam Peta dengan Cekap?

Susan Sarandon
Lepaskan: 2024-12-02 18:38:14
asal
942 orang telah melayarinya

How Can I Preserve Insertion Order in a Map Efficiently?

Memelihara Susunan Sisipan dalam Peta

Dalam domain struktur data, peta ialah bekas yang menyimpan pasangan nilai kunci. Keperluan biasa untuk peta adalah untuk mengekalkan susunan pasangan ini disisipkan, memastikan bahawa apabila melelaran melalui peta, unsur-unsur diakses dalam susunan ia ditambahkan. Walau bagaimanapun, pelaksanaan lalai peta piawai tidak menjamin pemeliharaan susunan sisipan ini.

Untuk menangani keperluan ini, beberapa alternatif boleh dipertimbangkan. Satu pilihan ialah menggunakan vektor pasangan, yang membolehkan penyelenggaraan susunan sisipan. Walau bagaimanapun, untuk senario yang melibatkan sejumlah besar operasi, seperti mengulang lebih 10,000,000 pasangan nilai kunci, vektor mungkin bukan pilihan yang optimum disebabkan kebimbangan prestasi.

Sebagai alternatif, untuk sistem dengan bilangan kunci yang terhad -pasangan nilai, seperti senario dalam soalan dengan kira-kira 50 pasangan, menukar peta menjadi vektor dan menggunakan perpustakaan pengisihan standard (std::sort) dengan pembanding pesanan yang sesuai, seperti functor, boleh menjadi pendekatan yang berdaya maju.

Pilihan lain untuk mengekalkan susunan sisipan dalam peta ialah memanfaatkan Perpustakaan Boost Multi-Index. Pustaka ini menyediakan pelbagai jenis indeks yang boleh digabungkan untuk mencipta bekas berbilang indeks. Sebagai contoh, dalam senario soalan, peta berbilang indeks boleh digunakan dengan dua indeks: satu untuk akses rawak (memelihara susunan sisipan) dan satu lagi indeks unik yang dicincang untuk carian rentetan yang cekap. Coretan kod berikut menggambarkan cara peta berbilang indeks boleh dilaksanakan untuk senario ini:

struct value_t {
  string s;
  int i;
};

struct string_tag {};

typedef multi_index_container<
    value_t,
    indexed_by<
        random_access<>, // this index represents insertion order
        hashed_unique<tag<string_tag>, member<value_t, string, &value_t::s>>
    >
> values_t;
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Susunan Sisipan dalam Peta dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan