单个键具有多个值的 STL 集合

kni*_*ils 2 c++ stl

从 sql 我有一个输出:

id值
第123话
第124话
124 年
第125话

我在 C++ 代码中处理这个输出,我想使用 123、125 个 ids(唯一)和 124,它们分别具有多个值。

基本上,我想分别存储唯一的和多值的 id,然后想分别检索它们。

我可以使用任何 stl 容器。

说 container1 存储唯一值

第123话
第125话

容器 2

第124话
124 年

在地图中,我可以拥有唯一的键值对:(123->xxx),(125->xxx)124->xxx,yyy单独的吗?

有人可以帮助我创建更好的设计吗?

aru*_*nte 5

最简单的方法是std::map<int, std::vector<std::string> >(替换std::string为您的任何类型),如下所示:

#include <iostream>
#include <string>
#include <map>
#include <vector>

int main()
{
  std::map< int, std::vector< std::string > > map; // could use std::unordered_map as well for O(1) lookup if order of keys doesn't matter
  map[123].push_back("AAA");
  map[124].push_back("BBB");
  map[124].push_back("CCC");
  map[125].push_back("DDD");
  for(auto itr = map.begin(); itr!=map.end(); itr++) {
      std::cout<<itr->first<<":";
      for(auto vitr = itr->second.begin(); vitr != itr->second.end(); vitr++){
          std::cout<<*vitr<<",";
      }
      std::cout<<std::endl;
  }
}
Run Code Online (Sandbox Code Playgroud)

输出:

123:AAA,
124:BBB,CCC,
125:DDD,
Run Code Online (Sandbox Code Playgroud)

从您的描述来看,将每个键(无论有多少条目)都视为值列表是否可以接受还不清楚。但如果是这样,这是最直接的方法。