Tempahan Berulang dalam std::map: Standard Dijamin atau Tidak?
Dalam std::map, elemen diisih berdasarkan kekuncinya . Walau bagaimanapun, adakah piawaian menentukan susunan unsur-unsur ini diulang? Soalan ini timbul apabila lelaran dari begin() hingga end(), terutamanya untuk peta berkunci integer.
Jaminan Standard
Ya, susunan lelaran dari mula () hingga end() dijamin oleh standard. Ini bermakna untuk peta berkunci integer, lelaran melalui elemen akan mengeluarkan nilai yang dikaitkan dengan kunci tersebut dalam tertib menaik.
Pelaksanaan Dalaman
Secara dalaman, std: :map menggunakan pepohon carian binari yang seimbang untuk carian dan penyisipan yang cekap. Elemen disimpan dalam cara yang mengekalkan susunan yang diisih ini. Apabila melelaran melalui pepohon, nod dilawati sedemikian rupa sehingga traversal tertib menghasilkan elemen dalam tertib diisih.
Menentukan Susunan
Fungsi perbandingan lalai yang digunakan dalam std::map ialah std::less
Contoh
Pertimbangkan coretan kod yang disediakan:
<code class="cpp">std::map<int, int> map_; map_[1] = 2; map_[2] = 3; map_[3] = 4; for (std::map<int, int>::iterator iter = map_.begin(); iter != map_.end(); ++iter) { std::cout << iter->second; }</code>
Jaminan Output:
Piawaian menjamin bahawa kod di atas akan mengeluarkan "234" kerana elemen akan diulang dalam tertib menaik kekuncinya. Tingkah laku pesanan ini penting untuk mencari dan mengekalkan sifat disusun struktur data peta yang cekap.
Atas ialah kandungan terperinci Adakah Susunan Lelaran dalam `std::map` Dijamin oleh Piawaian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!