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

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

Barbara Streisand
Lepaskan: 2024-11-28 06:33:10
asal
746 orang telah melayarinya

How to Efficiently Extract Keys or Values from a std::map into a Vector?

Dapatkan Elemen dari std::map ke dalam Vektor: Beyond Functors

Untuk mengekstrak kunci atau nilai daripada std::map, seseorang mungkin menggunakan fungsi secara naluri seperti yang ditunjukkan dalam kod yang disediakan coretan:

struct RetrieveKey
{
    template <typename T>
    typename T::first_type operator()(T keyValuePair) const
    {
        return keyValuePair.first;
    }
};

map<int, int> m;
vector<int> keys;
transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey());
Salin selepas log masuk

Walaupun pendekatan ini berfungsi secara teknikal, pendekatan ini mengalami kekaburan kod dan jarak pelaksanaan daripada sasaran.

Kaedah Alternatif: Gelung Iterator

Penyelesaian yang lebih mudah melibatkan gelung mudah di atas peta iterator:

for (map<int, int>::iterator it = m.begin(); it != m.end(); ++it) {
  keys.push_back(it->first);
}
Salin selepas log masuk

Kaedah ini menawarkan kebolehbacaan yang jelas dan pengubahsuaian mudah untuk mendapatkan semula nilai dan bukannya kekunci.

Pendekatan Perpustakaan Tingkatkan

Jika menggunakan Tingkatkan perpustakaan, seseorang boleh menggunakan BOOST_FOREACH untuk lebih besar lagi kesederhanaan:

pair<int, int> me; // map element type
vector<int> v;
BOOST_FOREACH(me, m) {
  v.push_back(me.first);
}
Salin selepas log masuk

Pendekatan ini memberikan eksplisit dan ringkas.

Ringkasnya, sementara kaedah functor kekal sebagai pilihan yang sah, gelung iterator dan pendekatan perpustakaan Boost menawarkan cara yang lebih mudah dan intuitif untuk dapatkan semula elemen daripada std::map menjadi vektor.

Atas ialah kandungan terperinci Bagaimana Mengeluarkan Kunci atau 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