我们如何在C ++中实现具有不同数据类型值的映射,就像在PHP中一样?

时间:2016-09-01 15:48:47

标签: php c++ matrix data-structures

在PHP中,我们可以创建如下的数组:

$somearray[0]['key1']= $someOtherArray;
$somearray[0]['key2']= 6;
$somearray[0]['key3']= 12.73647;

这基本上是一个具有不同数据类型值的矩阵($someOtherArray是另一个php数组)。我想以某种方式在C ++中实现它。我应该使用地图还是应该组合使用两种不同的数据结构?什么是最好的解决方案?

1 个答案:

答案 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;
}