模板映射.我们可以
Template Maps. .. can we?
我想创建一个容器(最好是映射),其中包含离散类型的值:
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,实现一些简单类型的擦除并不是那么复杂,但我会远离它,除非你真的需要它(即,比起你自己的方轮,更喜欢现成的预包装解决方案)
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 将函数类成员映射到类本身内部
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 使用std::函数映射对象方法
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 我们可以访问一个不存在的联盟的成员吗
- C++映射分割错误(核心转储)
- 内联映射初始化的动态atexit析构函数崩溃
- 使用"std::unordereded_map"映射到"std::list"对象
- 如何从多映射中删除特定的重复项
- 我们如何在模板类中使用静态映射,模板类的每个实例化都应该使用相同的映射
- 如何通过键和值以及在C 中的结果映射中比较两个地图?我们有任何STL API吗?
- 是我们迭代时更改哈希映射的行为,已定义
- 在类映射中,当我们有迭代器时,constiterator的必要性是什么
- 模板映射.我们可以
- 在多映射中,当两个迭代器持有具有映射到不同Value的相同键的值时.我们如何才能在地图上找到它们中的哪一个在另一个之前
- 我们可以在c++中制作一个映射,将值作为键的函数