Mengambil Kekunci dan Nilai daripada std::map ke dalam Vektor
Mendapatkan kunci atau nilai daripada std::map dan menyimpannya dalam vektor ialah operasi biasa. Walaupun terdapat pelbagai kaedah untuk mencapai matlamat ini, dua pendekatan yang digunakan secara meluas diserlahkan di bawah:
Menggunakan Fungsi Tersuai:
Satu teknik melibatkan mencipta functor tersuai yang mengubah nilai kunci berpasangan ke dalam jenis yang dikehendaki. Sebagai contoh, untuk mendapatkan semula kunci:
struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } };
Fungsi ini boleh digunakan dengan algoritma transformasi untuk lelaran ke atas peta dan mengekstrak kunci.
Menggunakan Iterator:
Pendekatan yang lebih mudah melibatkan penggunaan iterator untuk menggelung melalui peta dan mengakses terus kekunci atau nilai. Kaedah ini memberikan lebih fleksibiliti dan kawalan ke atas operasi:
for (std::map<int, int>::iterator it = m.begin(); it != m.end(); ++it) { keys.push_back(it->first); values.push_back(it->second); }
Pilihan Perpustakaan Boost:
Jika menggunakan perpustakaan Boost ialah pilihan, makro BOOST_FOREACH menawarkan sintaks ringkas dan boleh dibaca untuk lelaran:
BOOST_FOREACH(pair<int, int> p, m) { v.push_back(p.first); }
Pilihan pendekatan akhirnya bergantung pada keperluan khusus dan keutamaan pembangun. Pendekatan functor menyediakan serba boleh dan membolehkan pengendalian kunci dan nilai yang berasingan. Iterator menawarkan akses langsung dan mudah kepada data. Pilihan perpustakaan Boost memudahkan lelaran dengan sintaks ringkasnya.
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!