我需要有静态多图,但我不想把它作为类字段,'我只需要在一个方法中使用它。我是这样编写的,但是在初始化函数内的其他方法是不是只有首次调用函数才会运行初始化代码?
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
}
答案 0 :(得分:6)
如果您有C ++ 11编译器,则可以使用初始化列表:
static std::multimap<int, char> err = {
{ 1, 'a' },
{ 2, 'b' },
{ 3, 'v' },
{ 4, 'c' }
};
答案 1 :(得分:4)
编写一个函数,返回一个填充的multimap
并调用函数:
multimap<int, char> create_err()
{
multimap<int, char> err;
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'));
return err;
}
static void someClass::someMethod(/**/)
{
static multimap<int, char> err = create_err();
//method logic
//...
}