我在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) 考虑以下代码示例:
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)