從std::map 擷取鍵和值到Vector
從std::map 取得鍵或值並儲存它們在向量中是常見的操作。雖然有多種方法可以實現此目的,但下面重點介紹了兩種廣泛使用的方法:
使用自訂函子:
一種技術涉及建立轉換鍵值的自訂函子配對成所需的類型。例如,要檢索鍵:
struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } };
此函子可以與變換演算法一起使用來迭代映射並提取鍵。
使用迭代器:
更直接的方法是使用迭代器循環遍歷映射並直接存取鍵或值。此方法提供了更大的靈活性和對操作的控制:
for (std::map<int, int>::iterator it = m.begin(); it != m.end(); ++it) { keys.push_back(it->first); values.push_back(it->second); }
Boost 庫選項:
如果可以選擇使用Boost 庫,則BOOST_FOREACH 宏提供簡潔易讀的迭代語法:
BOOST_FOREACH(pair<int, int> p, m) { v.push_back(p.first); }
方法的選擇最終取決於具體的要求和偏好開發人員。函子方法提供了多功能性,並允許單獨處理鍵和值。迭代器提供對資料的直接且直接的存取。 Boost 函式庫選項以其簡潔的語法簡化了迭代。
以上是如何有效地將 std::map 中的鍵和值提取到向量中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!