2016-12-07 116 views
1

我在初始化矢量對時遇到了問題;我的代碼似乎沒有工作,adj_list的結果[0] [0]。首先不顯示:初始化矢量對

vector < vector <pair <int, int> > > adj_list; 
adj_list.insert(adj_list.end(), { { (make_pair(1,20), make_pair(2,5)), (make_pair(1,7),make_pair(0,2)) }}); 

我想要做的是建立一個鄰接表(硬編碼),具有這種結構:

adj_list [0] ---- make_pair(1,20),make_pair(2,5)

adj_list [1] ---- make_pair(0,7 ),make_pair(3,9)

我該如何去做這件事?

+0

'(X,Y)''<=>操作,(X,Y)' – LogicStuff

+0

adj_list.insert(adj_list.end( ),{{make_pair(1,20),make_pair(2,5))},{(make_pair(1,7),make_pair(0,2))}}); – Lukasz

回答

3

你使用了錯誤的括號,這使得(make_pair(1,20), make_pair(2,5))用逗號將其值make_pair(2,5)

你應該使用大括號:

adj_list.insert(adj_list.end(), { { {make_pair(1,20), make_pair(2,5)}, {make_pair(1,7),make_pair(0,2)} }}); 

但是,在另一方面:這不是一個初始化
該向量已被初始化爲空向量。

這是一個初始化(你也不必make_pair):

vector<vector<pair<int, int>>> adj_list = {{{1, 20}, {2,5}}, 
              {{1, 7}, {0, 2}}}; 
2

你調用comma operator,使用正確的語法插入(未初始化)將

adj_list.insert(adj_list.end(), { 
           { make_pair(1,20), make_pair(2,5) }, 
           { make_pair(1,7), make_pair(0,2) } 
           });