將 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中文網其他相關文章!