首頁 >後端開發 >C++ >在 C 中儲存鍵值對時如何維護插入順序?

在 C 中儲存鍵值對時如何維護插入順序?

Patricia Arquette
Patricia Arquette原創
2024-12-07 01:02:11228瀏覽

How to Maintain Insertion Order When Storing Key-Value Pairs in C  ?

使用std::map 依序儲存插入的鍵值對

std::map 是儲存鍵的容器資料結構-基於鍵排序的值對。但是,當需要維護對的插入順序時,地圖不再提供此功能。

替代解決方案

  • std ::vector>:使用向量來儲存對提供了簡單的插入順序跟踪,但對於頻繁查找(10,000,000 次)可能會更慢。
  • boost::multi_index:此函式庫提供了一個擴充容器,允許在相同資料結構上使用多個索引。它可用於為插入順序建立索引,從而可以按該順序迭代和存取對。

程式碼範例:

考慮此程式碼片段使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn