[Preface:关联 C++ 容器,例如std::map
有点像只有一个键列的微型数据库。升压的bimap
将其提升为一个两列表,在两列中都进行查找,但这就是类比——没有“polymap”来概括这个想法。]
无论如何,我想继续将地图视为数据库,现在我想知道是否有一个迭代器(或其他解决方案)允许我对多个组成地图进行联合。也就是说,所有映射都具有相同的类型(或至少是值类型和比较器),并且我想要一个迭代器,它将整个集合视为一个大的多重映射(重复的键是可以的),并让我以正确的联合方式遍历它命令。
Boost 中是否存在这样的东西?还是说很容易装起来?在伪代码中:
std::map<K, M> m1, m2;
union_iterator<K, M> u(m1, m2)
for(auto it = u.begin(); it != u.end(); ++it) { /* ... */ }
例如,如果我们有:
m1 = { { 9:00, "Check in"}, { 12:00, "Break" }, { 16:00, "Check out"} };
m2 = { { 10:30, "coffee" }, { 12:15, "baked beans" }, { 15:00, "lies" } };
然后我希望迭代器产生:
9:00, "Check in"; 10:30, "coffee"; 12:00, "Break"; 12:15, "baked beans"; ...