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
Mary-Kate Olsenasal
2024-11-29 20:30:11525semak imbas

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"));

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!

Kenyataan:
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