在PHP中,我们可以创建如下的数组:
$somearray[0]['key1']= $someOtherArray;
$somearray[0]['key2']= 6;
$somearray[0]['key3']= 12.73647;
这基本上是一个具有不同数据类型值的矩阵($someOtherArray
是另一个php数组)。我想以某种方式在C ++中实现它。我应该使用地图还是应该组合使用两种不同的数据结构?什么是最好的解决方案?
答案 0 :(得分:0)
多态性如何(仅适用于用户定义的类型(因此没有基元))
#include <map>
#include <iostream>
#include <memory>
class BaseClass {
protected:
int x;
public:
BaseClass(int x) : x(x) {}
virtual int GetValue() { return x; }
};
class Child1 : public BaseClass {
public:
Child1(int x) : BaseClass(x) {}
int GetValue() override { return x * 2; }
};
int main()
{
std::map<int, std::unique_ptr<BaseClass>> map;
map[0] = std::unique_ptr<BaseClass>(new BaseClass(1));
map[1] = std::unique_ptr<BaseClass>(new Child1(1));
std::cout << map[0]->GetValue() << std::endl;
std::cout << map[1]->GetValue() << std::endl;
return 0;
}