2012-12-13 59 views
1

我定義升壓多指標容器:C++提高命名空間(而不是隻)名稱快捷方式

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; 

在某些時候,我用數據填充它,並希望掃描其指標之一。爲此,我定義了一個迭代器:

DijkstraTripletContainer::nth_index<0>::type::iterator it; 

(使用舊的編譯器)。這是令人難以置信的漫長而尷尬。爲了使它更短,更易讀的我添加這些行:

#define dtt0 DijkstraTripletContainer::nth_index<0>::type 
#define dtt1 DijkstraTripletContainer::nth_index<1>::type 

,然後用於dtt0:迭代(這是優雅短,但在同一時間難看,因爲在#定義來表示)。有沒有更好的方式有沒有#定義的快捷方式?我看起來像優雅的東西

namespace bmi = boost::multi_index; 

評論?

回答

5
typedef DijkstraTripletContainer::nth_index<0>::type dtt0; 
+2

我想知道我怎麼沒有想到它自己。很可能,因爲它是名稱空間和類型的組合.. – arthur

相關問題