boost::any任意类别容器

本文介绍了boost::any,这是一个能存储任意类型的C++容器。它将不同类型的元素归一化,使得可以轻松地在STL容器中使用。通过any_cast和type()成员函数,可以方便地获取和转换存储的类型,尤其适用于处理多类型属性的场景。相比于C的union,boost::any提供了更简洁和强大的解决方案,并且结合assign库可以进一步增强其功能。
摘要由CSDN通过智能技术生成

boost::any是个容器,只包容一个元素,而且可以用任意类别构造。因为其吧类型归一,所以就适合用STL容器来容纳。

这让人想起Lua里面的变量,比any更加宽泛。连函数都可以包括。内部可以“就地”产生一个函数来返回。

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <boost/any.hpp>
#include <vector>
#include <string>
#include <algorithm>
#include <boost/foreach.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>

struct propty
{
    std::string _name;
    boost::any _val;
    propty (std::string name, boost::any val) :_name (name), _val (val) {};
};

typedef std::vector<propty> proptys;

template <typename T>
bool contains (const boost::any& a)
{
    return typeid(T) == a.type ( );
}
struct anyReader : std::unary_function<void,propty>
{
    void operator()(const propty& p)
    {
        typedef const char* cchar;
        std::cout << p._name 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值