Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program C++ untuk mengemas kini nilai kamus mengikut kunci

Program C++ untuk mengemas kini nilai kamus mengikut kunci

王林
王林ke hadapan
2023-08-28 22:37:06979semak imbas

Program C++ untuk mengemas kini nilai kamus mengikut kunci

Banyak bahasa komputer menyediakan kamus, iaitu struktur data. Kamus ialah struktur data yang lebih pantas yang menyimpan data berdasarkan kunci dan nilai. Ia mengekalkan kombinasi nilai kunci supaya kunci boleh dicari dengan mudah untuk komponen tertentu dalam hampir masa nyata. Standard bahasa C++ STL termasuk struktur data seperti kamus. Istilah "map" digunakan untuk menerangkan struktur data ini. Peta ini mencipta sepasang kunci dan nilai apa-apa jenis (memandangkan kami menggunakan C++, jenis mesti ditakrifkan sebelum penyusunan). Bahagian ini menunjukkan cara mengemas kini nilai dalam peta atau kamus sedia ada dalam C++.

Mari kita lihat dulu definisi struktur data peta. Templat dalaman ini memerlukan dua jenis berbeza. Sintaks dan perpustakaan yang diperlukan ditunjukkan di bawah -

Sintaks untuk mentakrifkan struktur data peta

#include <map>
map<type1, type2=""> mapVariable;
</type1,></map>

Dalam kes ini, kita perlu mengimport perpustakaan "peta" untuk menggunakan struktur data peta. Jenis data 1 dan 2 diperlukan untuk ini. Jenis data parameter utama ialah jenis1, dan jenis data parameter nilai ialah jenis2. Di sini objek yang diperoleh daripada kelas jenis peta ialah mapVariable. Sekarang mari kita lihat cara mendapatkannya menggunakan pemetaan C++.

Dalam struktur data peta kita boleh meletakkan nilai ke dalam peta dengan mengakses kunci sedia ada atau kunci baharu. Oleh kerana kita bercakap tentang mengemas kini nilai di sini, kita perlu mengemas kini kunci sedia ada. Kekunci akan digunakan dalam kurungan segi empat sama seperti tatatanda indeks tatasusunan. Mari lihat sintaks ini -

Kemas kini sintaks elemen dalam peta

mapVariable [<the key="" value="">] = <the new="" value="">;
</the></the>

Algoritma

  • Mencipta kamus atau peta D

  • Sudah ada nilai kunci k

  • Nilai v

  • kunci baharu k
  • Kemas kini seperti D[ k ] = v

  • Kembali ke D

Contoh

#include <iostream> 
#include <map> 
using namespace std;

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 = { { "ABCD", 25 },
        { "EFGH", 50 },
        { "IJKL", 75 },
        { "MNOP", 100 },
        { "QRST", 125 }
   };
   
   cout << "Before updation: " << endl;
   display( givenMap );
  
   cout << "After Updation: " << endl;
   
   //update the value of MNOP to 500
   givenMap[ "MNOP" ] = 500; 
   display( givenMap );
}

Output

Before updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 100
Key: QRST, value: 125
After Updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 500
Key: QRST, value: 125

Dalam kaedah ini, kami berjaya mengemas kini nilai dengan mengakses parameter utama. Walau bagaimanapun, proses ini mungkin tidak selalu tepat. Prosedur ini mempunyai kelemahan yang serius, iaitu kunci yang diberikan mungkin tidak wujud dalam peta. Tetapi dengan menggunakan proses ini ia akan memasukkan kunci baru dengan nilai yang diberikan. Jadi dalam kaedah seterusnya kita akan melihat cara mencari dan mengemas kini elemen selepas carian berjaya.

Kemas kini selepas carian

Anda boleh menggunakan fungsi find() dalam objek peta untuk menyemak sama ada kunci tertentu wujud dalam peta. Ia akan mengembalikan rujukan penuding kepada kunci, jika tidak, ia akan mengembalikan penuding "end()" ke peta, yang menunjukkan bahawa peta tidak mengandungi unsur di dalamnya. Mari kita lihat algoritma dan pelaksanaan untuk pemahaman yang lebih baik.

Algoritma

  • Mencipta kamus atau peta D

  • Sudah ada nilai kunci k

  • Nilai v

  • kunci baharu k
  • Buat objek iterator itr untuk mendapatkan penunjuk pasangan nilai kunci

  • Panggil kaedah find() untuk memasukkan kamus D ke dalam itr

  • Jika itr bukan penghujung D, yang bermaksud kunci itu wujud, maka

    • Masukkan v ke dalam itr

  • Tamat jika

Contoh

#include <iostream> 
#include <map> 
using namespace std;

void display( map <string, int>& givenMap ){
   for ( auto& it : givenMap ) {
      cout << "Key: " << it.first << ", value: " << it.second << endl;
   }
}

void updateElement( map <string, int>& givenMap, string givenKey, int newValue ){
   map <string, int>::iterator itr;
   itr = givenMap.find( givenKey );
   if( itr != givenMap.end() ){   // when item has found
      itr->second = newValue;
   }
}
   
int main(){ 
   map<string, int> givenMap;
   
   givenMap = { { "ABCD", 25 },
        { "EFGH", 50 },
        { "IJKL", 75 },
        { "MNOP", 100 },
        { "QRST", 125 }
   };
   
   cout << "Before updation: " << endl;
   display( givenMap );
  
   cout << "After Updation: " << endl;
   
   //update the value of MNOP to 500
   updateElement( givenMap, "MNOP", 1580 );
   display( givenMap );
}

Output

Before updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 100
Key: QRST, value: 125
After Updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 1580
Key: QRST, value: 125

Dalam kaedah ini, fungsi updateElement mengambil sebagai input peta, kunci sedia ada dan newValue. Kemudian cari kunci itu. Hanya kemas kini nilai jika ia wujud, jika tidak, dapatkannya dari fungsi. Jadi dengan menggunakan kaedah ini kita tidak boleh membuat entri baharu dalam peta tetapi hanya boleh mengemas kini entri sedia ada.

Kesimpulan

Dalam artikel ini kami mempelajari cara mengemas kini elemen dalam peta menggunakan kekunci. Dalam kaedah pertama, kami menggunakan kaedah penugasan langsung, yang berjaya mengemas kini elemen, tetapi ia juga boleh menambah elemen baharu apabila kunci belum wujud lagi. Kaedah kedua menghapuskan masalah ini dengan melakukan carian mudah pada permulaan. Kadangkala kita mungkin perasan bahawa kaedah kedua mengambil masa tambahan untuk mencari kunci dan kemudian mengemas kininya. Oleh itu, ia memerlukan lebih banyak masa carian daripada kaedah pertama. Tetapi jika kita berfikir dengan teliti, dalam kaedah pertama, penemuan ini juga pada dasarnya direalisasikan. Memandangkan struktur data menggunakan teknik berasaskan cincang, ia akan berjalan dalam masa yang tetap (dalam kebanyakan kes).

Atas ialah kandungan terperinci Program C++ untuk mengemas kini nilai kamus mengikut kunci. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam