初始化静态std :: multimap在其中声明的方法
Initialize static std::multimap inside method where it is declared
我需要具有静态多映射,但是我不想作为类字段进行静态多映射,'cos我只需要一种方法。我写的是这样,但是不是有其他方法可以在功能中初始化此映射,而是初始化代码只能在函数上首次调用吗?
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
}
如果您有C 11编译器,则可以使用初始化列表:
static std::multimap<int, char> err = {
{ 1, 'a' },
{ 2, 'b' },
{ 3, 'v' },
{ 4, 'c' }
};
写一个返回填充的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
//...
}
相关文章:
- 声明高维向量的更简洁的方法
- 模板方法访问正向声明的类仅在没有此指针的情况下无法编译
- 将子类方法声明为基类的友元
- 如何在声明为 const 的方法中更改类成员
- 编译器无法识别在类声明之外定义的方法
- 在类中声明 Array 成员的正确方法
- 如何在该接收类之外声明嵌套类的方法
- 转发声明在命名空间中不起作用的替代方法
- 在实现文件中使用模板参数声明方法
- 为什么在主方法之前声明方法会产生错误 c++
- 在 cpp 正文中声明方法时未定义的符号
- 声明方法时没有名称空间,也没有对C 作用的方法的对象
- 无法在类中声明方法 (C++_
- 可变声明方法
- 为什么这种前向声明方法会产生错误
- 在c++中可以通过模板声明方法吗?
- 在c++中声明方法时= 0的含义是什么?
- 为什么我需要为部分模板专门化重新声明方法/成员?
- 两种数组声明方法的区别
- 强制编译器声明方法是否已被实现- c++