我有一个疑问,我有一个类,我们可以说“ a”,其中的方法“ b”在体内使静态std :: map无效。问题是:
以下代码可确保调用std :: map的构造函数?还是我们有不确定的行为?
a.h
class a {
public:
void b();
};
a.cpp
void a::b(){
static std::map<int,int> mapB;
bool notFound = mapB.find(0) == mapB.end();
std::cout << "notFound: " << std::endl;
}
就我而言,此代码有效,输出为:
notFound: 1
但是正确吗?还是仅出现未定义行为的情况?
另一个疑问是,如果我有一个带有类而不是基本类型的地图,是同一回事吗?我报告了一个示例代码:
c.h
class c {
public:
int i;
};
a.h
class a {
public:
void b();
};
a.cpp
void a::b(){
static std::map<int,c> mapB;
bool notFound = mapB.find(0) == mapB.end();
std::cout << "notFound: " << std::endl;
}