C++ C++;——如何初始化成员函数中的静态变量? void ClassA::Func() { 静态地图; mapIntStr[0]=m_memberVariable0;
这是我所知道的唯一选项。所以你有了选择。在第一次创建C++ C++;——如何初始化成员函数中的静态变量? void ClassA::Func() { 静态地图; mapIntStr[0]=m_memberVariable0;,c++,C++,这是我所知道的唯一选项。所以你有了选择。在第一次创建ClassA对象时,在func中甚至在构造函数中初始化一次映射(这两个对象的更好版本),并承受对empty()几乎无需调用的开销,它很可能只有在正确内联之后才是一条指令,不会产生任何开销,或者使用静态初始化函数。创建一个内部结构,然后初始化该结构的构造函数中的所有内容,然后声明该结构的静态变量 //in ClassA.h class ClassA{ public: void Func(); static map<int,stri
ClassA
对象时,在func中甚至在构造函数中初始化一次映射(这两个对象的更好版本),并承受对empty()几乎无需调用的开销
,它很可能只有在正确内联之后才是一条指令,不会产生任何开销,或者使用静态初始化函数。创建一个内部结构,然后初始化该结构的构造函数中的所有内容,然后声明该结构的静态变量
//in ClassA.h
class ClassA{
public:
void Func();
static map<int,string> InitStatic();
static map<int,string> mapIntStr;
};
//in ClassA.cpp
#include "ClassA.h"
void ClassA::Func(){
// use mapIntStr
}
map<int,string> ClassA::InitStatic(){
map<int,string> ret;
// init ret
return ret;
}
map<int,string> ClassA::mapIntStr = ClassA::InitStatic();
对于您的情况:
void fun()
{
struct setter
{
setter(){}
};
static setter setup;
}
void ClassA::Func()
{
结构映射:公共标准::映射
{
地图()
{
(*这个)[0]=某物;
(*这)[1]=某种东西;
}
}
静态地图;
}
这不是一个静态成员变量,有什么具体原因吗?这不是最好的解决方案b/c CPU会浪费时间检查if条件——当然谢谢。最好的解决方案是其他的,brb,在中编辑。非常感谢你的建议。正如我在问题中提到的,我正在寻找d与调用静态函数初始化mapIntStr不同。--谢谢you@q0987:您似乎没有意识到几个CPU周期有多小。
//in ClassA.h
class ClassA{
public:
void Func();
static map<int,string> InitStatic();
static map<int,string> mapIntStr;
};
//in ClassA.cpp
#include "ClassA.h"
void ClassA::Func(){
// use mapIntStr
}
map<int,string> ClassA::InitStatic(){
map<int,string> ret;
// init ret
return ret;
}
map<int,string> ClassA::mapIntStr = ClassA::InitStatic();
void fun()
{
struct setter
{
setter(){}
};
static setter setup;
}
void ClassA::Func()
{
struct Map : public std::map<int, string>
{
Map()
{
(*this)[0] = something;
(*this)[1] = somethingElse;
}
}
static Map map;
}