2013-07-10 145 views
1

我觉得这个建筑:奇怪功能

std::map<T, T> a = boost::assign::map_list_of(arg11, arg12) 
              (arg21, arg22) 
              ; 

请告诉在此发生了什么,以及如何去实现它在C++?

+0

如何实现**什么**? – soon

+2

您是否尝试查看文档? – chris

+0

http://stackoverflow.com/questions/7531878/boost-assign-using-objects-with-map-list-of – Chemistpp

回答

3

我没看过的实施,BU我认为你可以重现一个“蓄电池”对象:

template<class T> 
class Acc 
{ 
public: 
    Acc &operator()(T a, T b) 
    { 
     map.insert(std::make_pair(a, b)); 
    } 
    operator std::map<T, T>() 
    { 
     return map; 
    } 
private: 
    std::map<T, T> map; 
} 

每次做类似的时间(A,B),您呼叫话务员( ),它只是在地图内添加std :: pair(a,b)。转换操作符允许获取s​​td :: map而不是Acc对象。

的使用方法是:

std::map<int, int> = Acc<int>()(1,2)(3,4)(6,7); 

注:代码没有经过测试。