c – 你如何做一个异构boost :: map?

我想有一个具有同类密钥类型但异构数据类型的映射。

我想要能够做(伪代码):

boost::map<std::string, magic_goes_here> m;
m.add<int>("a", 2);
m.add<std::string>("b", "black sheep");

int i = m.get<int>("a");
int j = m.get<int>("b"); // error!

我可以有一个指向基类作为数据类型的指针,但不是。

我从来没有使用过boost,但已经看过了融合库,但不知道我需要做什么。

谢谢你的帮助。

#include <map>
#include <string>
#include <iostream>
#include <boost/any.hpp>

int main()
{
    try
    {
        std::map<std::string, boost::any> m;
        m["a"]  = 2;
        m["b"]  = static_cast<char const *>("black sheep");

        int i = boost::any_cast<int>(m["a"]);
        std::cout << "I(" << i << ")\n";

        int j = boost::any_cast<int>(m["b"]); // throws exception
        std::cout << "J(" << j << ")\n";
    }
    catch(...)
    {
        std::cout << "Exception\n";
    }

}
http://stackoverflow.com/questions/251403/how-do-you-make-a-heterogeneous-boostmap

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 你如何做一个异构boost :: map?