模板映射.我们可以

Template Maps. .. can we?

本文关键字:我们 映射      更新时间:2023-10-16

我想创建一个容器(最好是映射),其中包含离散类型的值:

KEY     Value
Omega    1.9  
Output   myoutput.out  
sizex    82  
#####    ###  

其中键为"std::string",值为

我试着声明一些类似的东西。

template<typename T>  
map<string, typename T> mymap;  

但肯定不会奏效。

:(

我知道有一种简单的方法,将它们划分为不同的变量,但这只会导致代码膨胀。我也清楚这一事实,
std::map<key_value key, class Allocator = allocator<pair<const Key,T>>
需要了解有关"键"answers"值"的信息,以便在编译期间生成空间。

但这个问题困扰了我很长一段时间,只需要对其进行排序:D
有人能带我浏览一下吗:D

#include <map>
using namespace std;

union mytypes_t {
  int c;
  double i;
  char* c;
} 
int main()
{
    Map<int, mytypes_t> myObject;
}

关于工会的更多信息

正如您所提到的,简单的解决方案是将数据分离成三个不同的数组,并编写一个包装器,在适当的容器中找到元素(假设执行查找的代码确实知道变量的类型,否则甚至会变得复杂)。

或者,您可以使用变体类型(boost变体)或类型擦除(boost any)来使用将处理不同类型的容器。如果你不能使用boost,实现一些简单类型的擦除并不是那么复杂,但我会远离它,除非你真的需要它(即,比起你自己的方轮,更喜欢现成的预包装解决方案)