Program C++ untuk mengisih kamus mengikut nilai
Terdapat beberapa struktur data yang dipanggil kamus tersedia dalam pelbagai bahasa komputer. Satu bentuk khas struktur data yang lebih pantas yang menyimpan data mengikut kunci dan nilai ialah kamus. Ia menyimpan pasangan nilai kunci di sana supaya komponen tertentu boleh dicari dengan cepat menggunakan kunci, hampir dalam masa nyata. Struktur data seperti kamus disertakan dalam standard bahasa C++ STL. Struktur data ini dipanggil "map". map menjana pasangan kunci dan nilai apa-apa jenis (jenis mesti ditakrifkan sebelum penyusunan kerana kami menggunakan C++). Dalam bahagian ini, kita akan melihat cara mengisih entri kamus berdasarkan nilainya menggunakan C++.
Mari kita lihat dahulu cara struktur data peta ditakrifkan. Dua daripada templat dalaman ini diperlukan. Pustaka dan sintaks yang diperlukan ditunjukkan di bawah -
Sintaks untuk mentakrifkan struktur data peta
#include <map> map<type1, type2> mapVariable;
Untuk menggunakan struktur data peta dalam contoh ini, kita perlu mengimport pustaka "map". Ini memerlukan data jenis 1 dan 2. Jenis1 mewakili jenis data parameter utama, manakala jenis2 mewakili jenis nilai. Objek yang diperoleh daripada kelas jenis peta dipanggil mapVariable. Sekarang mari kita periksa cara menyusun peta anda berdasarkan faktor utama ini.
Gunakan Vektor Pasangan
Dalam idea ini, kami hanya mencipta vektor pasangan nilai kunci (tatasusunan dinamik, iaitu elemen lain yang diperoleh daripada C++ STL). Kemudian susun dengan mencipta fungsi perbandingan. Kandungan kemudiannya disimpan dalam peta sekali lagi dalam format yang disusun.
Algoritma
Ambil peta M sebagai input
Tentukan tatasusunan dinamik A untuk menyimpan pasangan nilai kunci
Untuk setiap pasangan nilai kunci p dalam M, laksanakan
masukkan p ke dalam A
Tamat
Isih A mengikut kekunci mereka
Buat peta kosong newMap
Untuk setiap pasangan p dalam A -
akan memasukkan newMap
ke dalam p
Tamat
Kembali ke peta baharu
Contoh
#include <iostream> #include <vector> #include <map> #include <algorithm> using namespace std; // Create a comparator function to perform key-value pair comparison bool compare ( pair <string, int> &a, pair <string, int> &b ){ return a.second < b.second; } //Define sorting function to sort given dictionary or map map <string, int> sorting( map <string, int> givenMap ){ vector<pair <string, int> > pairVec; map<string, int> newMap; for ( auto& it : givenMap ) { pairVec.push_back( it ); } sort( pairVec.begin(), pairVec.end(), compare); for ( auto& it : pairVec ) { cout << "Key: " << it.first << ", value: " << it.second << endl; newMap.insert( {it.first, it.second } ); } return newMap; } void display( map <string, int>& givenMap ){ for ( auto& it : givenMap ) { cout << "Key: " << it.first << ", value: " << it.second << endl; } } int main(){ map<string, int> givenMap; givenMap = { { "Three", 3 }, { "Two", 2 }, { "Four", 4 }, { "One", 1 }, { "Five", 5 } }; cout << "Before Sorting: " << endl; display( givenMap ); cout << "After Sorting: " << endl; givenMap = sorting( givenMap ); }
Output
Before Sorting: Key: Five, value: 5 Key: Four, value: 4 Key: One, value: 1 Key: Three, value: 3 Key: Two, value: 2 After Sorting: Key: One, value: 1 Key: Two, value: 2 Key: Three, value: 3 Key: Four, value: 4 Key: Five, value: 5
Kami telah mengisih, dan jika kami menyimpan hasil akhir dalam peta, kami tidak akan melihat sebarang perbezaan sebelum dan selepas mengisih, ini kerana struktur data peta menyimpan data dalam bentuk yang diisih mengikut kekunci pada kebanyakan masa. Di sini kami menggunakan vektor untuk mengisih berdasarkan nilai. Pesanan boleh didapati jika kami mencetaknya terus dari vektor.
Gunakan set sepasang
Anda boleh menggunakan jenis struktur data lain, satu set, untuk mengisih pasangan nilai kunci dalam struktur data yang dipetakan. Data disimpan teratur dalam struktur data pengumpulan. Oleh itu, selepas menambah elemen pada koleksi, tidak perlu mengisih lagi. Untuk pemahaman yang lebih baik, mari lihat algoritma.
Algoritma
Ambil peta M sebagai input
Tentukan koleksi S untuk menyimpan pasangan nilai kunci
Untuk setiap pasangan nilai kunci p dalam M, laksanakan
Masukkan p ke dalam S
Tamat
Buat peta kosong newMap
Untuk setiap pasangan p -
dalam Sakan memasukkan newMap
ke dalam p
Tamat
Kembali ke peta baharu
Contoh
#include <iostream> #include <set> #include <map> #include <algorithm> using namespace std; // Create a comparator function to perform key-value pair comparison struct compare { template <typename T> bool operator()(const T& a, const T& b) const { if (a.second != b.second) { return a.second < b.second; } return a.first < b.first; } }; //Define sorting function to sort given dictionary or map map <string, int> sorting( map <string, int> givenMap ){ set<pair <string, int>, compare> pairSet( givenMap.begin(), givenMap.end() ); map<string, int> newMap; for ( auto& it : givenMap ) { pairSet.insert( it ); } for ( auto& it : pairSet ) { cout << "Key: " << it.first << ", value: " << it.second << endl; newMap.insert( {it.first, it.second } ); } return newMap; } void display( map <string, int>& givenMap ){ for ( auto& it : givenMap ) { cout << "Key: " << it.first << ", value: " << it.second << endl; } } int main(){ map<string, int> givenMap; givenMap = { { "Three", 3 }, { "Two", 2 }, { "Four", 4 }, { "One", 1 }, { "Five", 5 } }; cout << "Before Sorting: " << endl; display( givenMap ); cout << "After Sorting: " << endl; givenMap = sorting( givenMap ); }
Output
Before Sorting: Key: Five, value: 5 Key: Four, value: 4 Key: One, value: 1 Key: Three, value: 3 Key: Two, value: 2 After Sorting: Key: One, value: 1 Key: Two, value: 2 Key: Three, value: 3 Key: Four, value: 4 Key: Five, value: 5
Kesimpulan
Dalam siaran ini, kami melihat dua cara berbeza untuk mengisih struktur data kamus (dipanggil peta dalam C++) dan mengisih mengikut nilai. Memandangkan peta ialah peta cincang, data kuncinya disimpan menggunakan algoritma cincang. Walaupun kunci berbeza, nilai untuk kunci yang berbeza mungkin sama. Kami menggunakan pengisihan set dan vektor, di mana kedua-dua vektor dan set membawa maklumat berpasangan, dan kami mengisihnya. Setiap pasangan boleh diisih dalam dua cara berbeza. Jenis nilai adalah jenis kedua dan jenis kunci adalah yang pertama.
Atas ialah kandungan terperinci Program C++ untuk mengisih kamus mengikut nilai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Artikel ini akan memperkenalkan cara mengisih gambar mengikut tarikh penangkapan dalam Windows 11/10, dan juga membincangkan perkara yang perlu dilakukan jika Windows tidak menyusun gambar mengikut tarikh. Dalam sistem Windows, menyusun foto dengan betul adalah penting untuk memudahkan anda mencari fail imej. Pengguna boleh mengurus folder yang mengandungi foto berdasarkan kaedah pengisihan yang berbeza seperti tarikh, saiz dan nama. Selain itu, anda boleh menetapkan tertib menaik atau menurun mengikut keperluan untuk menyusun fail dengan lebih fleksibel. Cara Isih Foto mengikut Tarikh Diambil dalam Windows 11/10 Untuk mengisih foto mengikut tarikh yang diambil dalam Windows, ikut langkah berikut: Buka Gambar, Desktop atau mana-mana folder tempat anda meletakkan foto Dalam menu Reben, klik

Outlook menawarkan banyak tetapan dan ciri untuk membantu anda mengurus kerja anda dengan lebih cekap. Salah satunya ialah pilihan pengisihan yang membolehkan anda mengkategorikan e-mel anda mengikut keperluan anda. Dalam tutorial ini, kami akan mempelajari cara menggunakan ciri pengisihan Outlook untuk menyusun e-mel berdasarkan kriteria seperti pengirim, subjek, tarikh, kategori atau saiz. Ini akan memudahkan anda memproses dan mencari maklumat penting, menjadikan anda lebih produktif. Microsoft Outlook ialah aplikasi berkuasa yang memudahkan untuk mengurus jadual e-mel dan kalendar anda secara berpusat. Anda boleh menghantar, menerima dan mengatur e-mel dengan mudah, manakala fungsi kalendar terbina dalam memudahkan untuk menjejaki acara dan janji temu anda yang akan datang. Bagaimana untuk berada di Outloo

Pembangunan PHP: Bagaimana untuk melaksanakan fungsi pengisihan data jadual dan halaman Dalam pembangunan web, memproses sejumlah besar data adalah tugas biasa. Untuk jadual yang perlu memaparkan sejumlah besar data, biasanya perlu melaksanakan fungsi pengisihan dan halaman untuk memberikan pengalaman pengguna yang baik dan mengoptimumkan prestasi sistem. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pengisihan dan halaman data jadual, dan memberikan contoh kod khusus. Fungsi pengisihan melaksanakan fungsi pengisihan dalam jadual, membolehkan pengguna mengisih dalam tertib menaik atau menurun mengikut medan yang berbeza. Berikut ialah borang pelaksanaan

Cara menggunakan Vue untuk melaksanakan kesan pengisihan seret dan lepas Vue.js ialah rangka kerja JavaScript popular yang boleh membantu kami membina aplikasi bahagian hadapan yang sangat interaktif. Dalam Vue, kami boleh melaksanakan kesan isihan seret dan lepas dengan mudah, membolehkan pengguna mengisih data dengan menyeret elemen. Artikel ini akan memperkenalkan cara menggunakan Vue untuk melaksanakan kesan pengisihan seret dan lepas dan memberikan contoh kod khusus. Mula-mula, kita perlu mencipta contoh Vue dan menentukan tatasusunan untuk menyimpan data yang hendak diisih. Dalam contoh kita akan

Fungsi nama semula menukar fail atau direktori daripada nama lamanya kepada nama baharunya. Operasi ini serupa dengan operasi bergerak. Jadi kita juga boleh menggunakan fungsi nama semula ini untuk memindahkan fail. Fungsi ini wujud dalam fail pengepala perpustakaan stdio.h. Sintaks fungsi nama semula adalah seperti berikut: intrename(constchar*oldname,constchar*newname); Fungsi rename() fungsi menerima dua parameter. Satu nama lama dan satu lagi nama baru. Kedua-dua parameter adalah penunjuk kepada aksara malar yang mentakrifkan nama lama dan baharu fail. Mengembalikan sifar jika fail berjaya dinamakan semula, jika tidak, mengembalikan integer bukan sifar. Semasa operasi menamakan semula

Bagaimanakah kaedah Arrays.sort() dalam Java menyusun tatasusunan mengikut pembanding tersuai? Di Java, kaedah Arrays.sort() ialah kaedah yang sangat berguna untuk menyusun tatasusunan. Secara lalai, kaedah ini disusun mengikut tertib menaik. Tetapi kadangkala, kita perlu mengisih tatasusunan mengikut peraturan yang ditentukan sendiri. Pada masa ini, anda perlu menggunakan pembanding tersuai (Comparator). Pembanding tersuai ialah kelas yang melaksanakan antara muka Pembanding.

Fungsi hiperbola ditakrifkan menggunakan hiperbola dan bukannya bulatan dan bersamaan dengan fungsi trigonometri biasa. Ia mengembalikan parameter nisbah dalam fungsi sinus hiperbolik dari sudut yang dibekalkan dalam radian. Tetapi lakukan sebaliknya, atau dengan kata lain. Jika kita ingin mengira sudut daripada sinus hiperbolik, kita memerlukan operasi trigonometri hiperbolik songsang seperti operasi sinus songsang hiperbolik. Kursus ini akan menunjukkan cara menggunakan fungsi sinus songsang hiperbolik (asinh) dalam C++ untuk mengira sudut menggunakan nilai sinus hiperbolik dalam radian. Operasi arcsine hiperbolik mengikut formula berikut -$$\mathrm{sinh^{-1}x\:=\:In(x\:+\:\sqrt{x^2\:+\:1})}, Di mana\:In\:is\:logaritma asli\:(log_e\:k)

Dalam kerja kami, kami sering menggunakan perisian wps Terdapat banyak cara untuk memproses data dalam perisian wps, dan fungsinya juga sangat berkuasa Kami sering menggunakan fungsi untuk mencari purata, ringkasan, dan sebagainya kaedah yang boleh digunakan untuk data statistik telah disediakan untuk semua orang dalam perpustakaan perisian WPS Di bawah kami akan memperkenalkan langkah-langkah bagaimana untuk mengisih markah dalam WPS Selepas membaca ini, anda boleh belajar daripada pengalaman. 1. Mula-mula buka jadual yang perlu diberi ranking. Seperti yang ditunjukkan di bawah. 2. Kemudian masukkan formula =pangkat(B2, B2: B5, 0), dan pastikan anda memasukkan 0. Seperti yang ditunjukkan di bawah. 3. Selepas memasukkan formula, tekan kekunci F4 pada papan kekunci komputer Langkah ini adalah untuk menukar rujukan relatif kepada rujukan mutlak.
