小编Kri*_*ris的帖子

专门化hashmap模板

我在C++中使用hash_map并希望为它提供简化的类型名称:

键类型和哈希功能始终相同.

stdext::hash_map<std::string, [MAPPED TYPE], CStringHasher>
Run Code Online (Sandbox Code Playgroud)

但是,每次我声明一个将字符串映射到类型X的哈希映射时,我真的不想写所有这些.

  • 我可以编写简化此操作的模板或宏吗?

所以上面的声明看起来像:

template<typename T> StringHashmap = stdext::hash_map<std::string, T, CStringHasher>

StringHashmap<int> mapA; //Maps std::string to int
StringHashamp<bool> mapB; //Maps std::string to bool
Run Code Online (Sandbox Code Playgroud)

c++ hash templates std hashmap

3
推荐指数
1
解决办法
901
查看次数

C++:创建映射到枚举的某种类型的对象

考虑以下代码示例:

class Base;
class A; class B; class C; //A, B and C are inherited from Base

enum TypeID
{
   TYPE_A = 0, TYPE_B, TYPE_C, TYPE_MAX;
}

class SomeContainer
{
    private Base* objects[ TYPE_MAX ];


    public void Add( TypeID what )
    {
        if( objects[ what ] ) return;

        switch( what )
        {
            case TYPE_A: objects[ TYPE_A ] = (Base*) new A;
            case TYPE_B: objects[ TYPE_B ] = (Base*) new B;
            case TYPE_C: objects[ TYPE_C ] = (Base*) new C;
            default: …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
5742
查看次数

标签 统计

c++ ×2

hash ×1

hashmap ×1

std ×1

templates ×1