Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengeluarkan Kunci dan Nilai dengan Cekap daripada std::map ke dalam Vektor?

Bagaimana Mengeluarkan Kunci dan Nilai dengan Cekap daripada std::map ke dalam Vektor?

Mary-Kate Olsen
Lepaskan: 2024-11-29 20:30:11
asal
524 orang telah melayarinya

How to Efficiently Extract Keys and Values from a std::map into Vectors?

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

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

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

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!

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