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
Lepaskan: 2024-12-07 13:29:14
asal
274 orang telah melayarinya

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;
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan