在声明它的方法中初始化静态std :: multimap

Hel*_*oHi 2 c++ static initialization

我需要有静态多图,但我不想把它作为类字段,'我只需要在一个方法中使用它.我是这样编写的,但是在初始化函数内的其他方法是不是初始化代码只能在第一次调用函数时运行?

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
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 6

如果您有C++ 11编译器,则可以使用初始化列表:

static std::multimap<int, char> err = {
    { 1, 'a' },
    { 2, 'b' },
    { 3, 'v' },
    { 4, 'c' }
};
Run Code Online (Sandbox Code Playgroud)