Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengeluarkan Kunci dan Nilai dengan Cekap daripada std::map ke dalam Vektor?
Mendapatkan Kekunci atau Nilai daripada std::map ke dalam Vektor
Mendapatkan semula semua kunci atau nilai daripada std::map ke dalam vektor ialah tugas biasa, tetapi std::map itu sendiri tidak mempunyai fungsi ahli yang jelas untuk tujuan ini. Satu pendekatan melibatkan penentuan functor tersuai, seperti yang ditunjukkan dalam kod yang disediakan:
struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } }; map<int, int> m; vector<int> keys; // Retrieve all keys transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey()); // Dump all keys copy(keys.begin(), keys.end(), ostream_iterator<int>(cout, "\n"));
Penyelesaian ini memanipulasi data di luar peta, yang mungkin tidak sesuai dalam sesetengah kes. Pendekatan alternatif yang menggunakan for-gelung yang mudah menawarkan penyelesaian yang lebih jelas dan jelas:
map<int, int> m; vector<int> key, value; for (auto it = m.begin(); it != m.end(); ++it) { key.push_back(it->first); value.push_back(it->second); cout << "Key: " << it->first << endl; cout << "Value: " << it->second << endl; }
Dengan melelaran melalui peta dengan cara ini, kami boleh mengekstrak kedua-dua kunci dan nilai terus ke dalam bekas vektor.
Pilihan lain, jika menggunakan perpustakaan Boost, memudahkan proses selanjutnya:
map<int,int> m; pair<int,int> me; // what a map<int, int> is made of vector<int> v; BOOST_FOREACH(me, m) { v.push_back(me.first); cout << me.first << "\n"; }
Versi ini ialah ringkas, boleh dibaca dan menyediakan kawalan yang jelas ke atas proses mendapatkan semula. Memilih kaedah yang paling sesuai bergantung pada keperluan dan pilihan khusus pembangun.
Atas ialah kandungan terperinci Bagaimana Mengeluarkan Kunci dan Nilai dengan Cekap daripada std::map ke dalam Vektor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!