C ++中的FIFO映射

游行

我需要存储一些键/值对,并再次访问它们所引用的键-不一定在地图中,尽管这看起来很自然。此外,如果地图超过一定大小,则需要删除最旧的对。

有没有一种方法可以使用映射或类似的结构以某种方式在C ++ 11中将映射和队列结合起来实现此目的?

更新:我想用一个std::unsorted_map不幸的是,我严重缺少std::map可以提供帮助的功能。无序列表似乎既不支持rbegin()也不支持其迭代器--,因此我无法使用end()

有没有比循环遍历更好的方法了size()-1

胡安

对于此问题没有唯一的解决方案,最简单的解决方案是使用辅助队列按插入顺序存储密钥。

map<string, string> m_myMap;
queue<string>       m_myQueue;

void insert(const string& key, const string& value) {
  m_myMap.insert(make_pair(key, value));
  m_myQueue.push(key);
}

void deleteOldOnes() {
  while (m_myQueue.size() > MAX_SIZE) {
   m_myMap.erase(m_myQueue.front());
   m_myQueue.pop();
  }
}

您一直在使用映射来通过键访问元素,除了上述两种方法之外,不应在其他任何地方使用队列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中实现FIFO列表

来自分类Dev

在C中实现FIFO列表

来自分类Dev

FIFO read()函数卡在c中

来自分类Dev

如何在C中对FIFO队列中的元素进行标识?

来自分类Dev

向量在结构中的c ++映射

来自分类Dev

检查文件是否为C ++中的命名管道(FIFO)

来自分类Dev

在c ++中与fifo一起使用(阻止读取)

来自分类Dev

在fifo中编写脚本bash并从中读取c程序

来自分类Dev

使用FIFO从队列中删除C编程(先进先出)

来自分类Dev

C中的FIFO页面替换,输出错误

来自分类Dev

使用c ++中的映射指针将值插入映射

来自分类Dev

静态映射作为C ++中的类成员

来自分类Dev

C ++中的两个键映射

来自分类Dev

在Vim中映射<C-CR>

来自分类Dev

表映射如何在C中工作?

来自分类Dev

指针作为映射C ++ STL中的键

来自分类Dev

C ++中的内存映射流数据

来自分类Dev

在C ++ 17中迭代映射键

来自分类Dev

C ++ 17中的双向静态值映射

来自分类Dev

在C ++中创建编译时键值映射

来自分类Dev

静态映射作为C ++中的类成员

来自分类Dev

用C ++中的Set值进行映射

来自分类Dev

此映射在C ++中如何工作?

来自分类Dev

C ++中的内存高效双向映射

来自分类Dev

C ++中的智能指针和映射

来自分类Dev

Bigrams作为C ++中的映射键

来自分类Dev

C++Driver中Blob类型的映射

来自分类Dev

C++中的进程内存映射

来自分类Dev

C使用select()从两个命名管道(FIFO)中读取