【发布时间】:2012-12-19 17:20:27
【问题描述】:
我需要静态多图,但我不想将它作为类字段,因为我只需要一种方法。我是这样写的,但是在函数内部初始化这个映射是否有任何其他方式,初始化代码只会在第一次调用函数时运行?
static void someClass::someMethod(/**/)
{
static multimap<int, char> err;
if(err.size() == 0)
{//initialize here
err.insert(std::pair<int, char>(1, 'a'));
err.insert(std::pair<int, char>(2, 'b'));
err.insert(std::pair<int, char>(3, 'v'));
err.insert(std::pair<int, char>(4, 'c'));
}
//method logic
}
【问题讨论】:
-
也许这与您的情况无关,但请记住此代码不是线程安全的
-
@LucaMartini 是的,我知道,但在我的情况下没关系。那么这种方式可以吗?我认为一定有更优雅的东西
-
如何将 multimap 包装在一个类中并为它定义一个构造函数来获取对列表?这样它只会被构造一次,在这种情况下你不需要 if 语句......唯一的问题是你创建了一个你扔掉的对列表,但无论如何你都会这样做。而且您需要在包装类中提供对地图的访问功能。
标签: c++ static initialization