在std :: map中使用'auto'

时间:2019-04-09 12:42:20

标签: c++ dictionary stl c++17 stdany

我正在解析JSON文件,值可以包含整数,字符串或浮点数。通常我有这样定义的地图:

 std::map<std::string, std::string> myMap;

问题是我不清楚如果可能存在不同的数据类型,如何使用地图,我尝试过:

 std::map<std::string, auto> myMap;

但是我得到一个错误:

'auto' is not allowed here

我可以在其中使用不同的数据类型吗?还是需要定义一个可以包含不同数据类型的对象,例如:

Class MyObject
{
  private:
    int integerValue;
    std::string stringValue;

  public:
    void setValue( std::string value, int type );
}

MyObject::setValue( std::string value, int type )
{
    if( type == 0 )
       stringValue = value;
    else if( type == 1 )
       integerValue = stoi( value );
}

或者有更好的方法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

为了实现您的要求,请使用:

igraph

例如:

std::map<std::string, std::any> myMap;