Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengekalkan Susunan Sisipan dalam std::map, Terutamanya dengan Bilangan Elemen Terhad?

Bagaimanakah Saya Boleh Mengekalkan Susunan Sisipan dalam std::map, Terutamanya dengan Bilangan Elemen Terhad?

DDD
DDDasal
2024-12-07 13:29:14307semak imbas

How Can I Maintain Insertion Order in a std::map, Especially with a Limited Number of Elements?

std::Peta dengan Susunan Sisipan

Menjejaki susunan sisipan dalam std::map adalah penting apabila susunan unsur penting . Walaupun std::map terutamanya mengisih elemen berdasarkan nilai utama, terdapat dua penyelesaian berpotensi untuk menangani keperluan anda:

Penyelesaian 1: Menggunakan std::Vector

Walaupun anda menyebut kebimbangan tentang prestasi apabila menggunakan std::vector disebabkan oleh carian dan kenaikan yang kerap, std::vector ditambah dengan pembanding tersuai boleh mengekalkan susunan sisipan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pendekatan ini sememangnya boleh memperkenalkan kelemahan prestasi jika bilangan elemen meningkat dengan ketara.

Penyelesaian 2: Boost::Multi-Index

Untuk senario khusus anda dengan bilangan (50) elemen yang terhad, perpustakaan berbilang indeks Boost menyediakan penyelesaian yang mantap. Ia membolehkan penciptaan bekas dengan berbilang indeks. Dalam kes anda, coretan kod berikut menunjukkan cara mentakrifkan bekas berbilang indeks yang menjejaki kedua-dua tertib sisipan dan pengecam rentetan unik:

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;

Bekas berbilang indeks ini membolehkan carian cekap berdasarkan pengecam rentetan sementara mengekalkan susunan sisipan melalui indeks "random_access".

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Susunan Sisipan dalam std::map, Terutamanya dengan Bilangan Elemen Terhad?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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