使用 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中文网其他相关文章!