小编Dav*_*vid的帖子

在C ++中初始化静态二维映射<int,int>

我有二维图

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]”一样进行初始化。

您能否解释一下如何以正确的方式初始化静态二维图

c++ containers stl multidimensional-array

5
推荐指数
1
解决办法
64
查看次数

多重继承:不能实例化抽象类

我有这个:

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)

c++ base-class c++17

3
推荐指数
1
解决办法
130
查看次数

是否可以在 C++ 编译时计算函数长度?

我有这段代码:

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() 的完整代码复制到此数组中,这是必要的。

c++ windows constants visual-studio-2019

3
推荐指数
1
解决办法
210
查看次数