我有二维图
map <int, map<int, int>> _map;
Run Code Online (Sandbox Code Playgroud)
第一种初始化效果很好:
int i = 1, j = 2, k = 3;
map <int, map<int, int>> _map;
_map[i][j] = 100;
_map[i][k] = 200;
std::cout << _map[i][j] << ":" << _map[i][k] << std::endl;
Run Code Online (Sandbox Code Playgroud)
因此它打印:
100:200
Run Code Online (Sandbox Code Playgroud)
但是,第二次初始化失败:
map <int, map<int, int>> _map = {
{1, {{2, 100}}},
{1, {{3, 200}}}
};
std::cout << _map[i][j] << ":" << _map[i][k] << std::endl;
Run Code Online (Sandbox Code Playgroud)
第二张照片:
100:0
Run Code Online (Sandbox Code Playgroud)
我知道map具有“唯一键”,另一方面,我们可以像“ _map [i] [j]”一样进行初始化。
您能否解释一下如何以正确的方式初始化静态二维图?
我有这个:
class Base {
public:
Base() {};
virtual ~Base() = default;
virtual void Draw() = 0;
};
class Derived_1 {
public:
Derived_1() {};
void Draw() { std::cout << "Draw()" << std::endl; };
};
class Derived_2 : public Base, public Derived_1 {
public:
Derived_2() {};
~Derived_2() {};
//void Draw() { Derived_1::Draw(); }; <<<<<===--- This works well
};
class Derived_3 : public Derived_2 {
public:
Derived_3() {};
~Derived_3() {};
};
int main()
{
Base* d = new Derived_3();
d->Draw();
return 0;
} …Run Code Online (Sandbox Code Playgroud) 我有这段代码:
constexpr static VOID fStart()
{
auto a = 3;
a++;
}
__declspec(naked)
constexpr static VOID fEnd() {};
static constexpr auto getFSize()
{
return (SIZE_T)((PBYTE)fEnd - (PBYTE)fStart);
}
static constexpr auto fSize = getFSize();
static BYTE func[fSize];
Run Code Online (Sandbox Code Playgroud)
是否可以在不使用任何标准库的情况下在编译期间将“func[fSize]”数组大小声明为“fStart()”的大小?为了稍后将 fStart() 的完整代码复制到此数组中,这是必要的。