art*_*hur 1 c++ boost shortcut
我正在定义一个boost多索引容器:
namespace bmi = boost::multi_index;
struct DijkstraTriplet {
...
};
typedef multi_index_container <
DijkstraTriplet,
bmi::indexed_by<
bmi::ordered_unique<bmi::member<DijkstraTriplet,size_t,&DijkstraTriplet::linkId> >,
bmi::ordered_non_unique<bmi::identity<DijkstraTriplet> >
>
> DijkstraTripletContainer;
Run Code Online (Sandbox Code Playgroud)
在某些时候,我正在填充数据,并希望扫描其中一个索引.为此我定义了一个迭代器:
DijkstraTripletContainer::nth_index<0>::type::iterator it;
Run Code Online (Sandbox Code Playgroud)
(使用旧的编译器).这令人难以置信的漫长而尴尬.为了使它更短,更可读,我添加了这些行:
#define dtt0 DijkstraTripletContainer::nth_index<0>::type
#define dtt1 DijkstraTripletContainer::nth_index<1>::type
Run Code Online (Sandbox Code Playgroud)
然后使用dtt0 :: iterator(优雅地简短,但同时又丑陋,因为用#defines表示).有没有#defines的快捷方式有更优雅的方法吗?我看起来像一样优雅
namespace bmi = boost::multi_index;
Run Code Online (Sandbox Code Playgroud)
评论?
小智 5
typedef DijkstraTripletContainer::nth_index<0>::type dtt0;
Run Code Online (Sandbox Code Playgroud)