首頁 > 後端開發 > C++ > 如何有效地將 std::map 中的鍵或值提取到向量中?

如何有效地將 std::map 中的鍵或值提取到向量中?

Barbara Streisand
發布: 2024-11-28 06:33:10
原創
766 人瀏覽過

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

將 std::map 中的元素檢索到向量中:超越函子

要從 std::map中提取鍵或值,可以本能地使用函子,如所提供的程式碼片段所示:

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());
登入後複製

雖然這種方法在技術上函數,它會受到程式碼模糊和與目標的執行距離的影響。

替代方法:迭代器循環

更簡單的解決方案涉及對地圖迭代器的簡單循環:

for (map<int, int>::iterator it = m.begin(); it != m.end(); ++it) {
  keys.push_back(it->first);
}
登入後複製

此方法提供了清晰的可讀性和輕鬆的修改來檢索值而不是

Boost函式庫方法

如果使用 Boost 函式庫,可以使用 BOOST_FOREACH 來獲得更大的簡單性:

pair<int, int> me; // map element type
vector<int> v;
BOOST_FOREACH(me, m) {
  v.push_back(me.first);
}
登入後複製

此方法提供明確性和簡潔性。

總之,雖然函子方法仍然是一個有效的選項,但迭代器循環和 Boost 庫方法提供了更簡單、更直觀的方法來將 std::map 中的元素檢索到向量中。

以上是如何有效地將 std::map 中的鍵或值提取到向量中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板