使用std::map 依序儲存插入的鍵值對
std::map 是儲存鍵的容器資料結構-基於鍵排序的值對。但是,當需要維護對的插入順序時,地圖不再提供此功能。
替代解決方案
程式碼範例:
考慮此程式碼片段使用boost::multi_index 方法:
#include <boost/multi_index_container.hpp> #include <boost/multi_index/member.hpp> #include <boost/multi_index/random_access.hpp> #include <boost/multi_index/hashed_unique.hpp> struct value_t { std::string s; int i; }; struct string_tag {}; typedef boost::multi_index_container< value_t, boost::multi_index::indexed_by< boost::multi_index::random_access<>, // Insertion order index boost::multi_index::hashed_unique<boost::multi_index::tag<string_tag>, boost::multi_index::member<value_t, std::string, &value_t::s>> > > values_t;
在此範例中,values_t容器使用兩個索引:s 成員上的插入順序索引和雜湊唯一索引。這允許透過 s 鍵進行有序迭代和高效查找。
以上是在 C 中儲存鍵值對時如何維護插入順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!