使用

时间:2016-12-07 12:18:04

标签: c++ vector std-pair

我在使用对初始化向量时遇到问题;我的代码似乎不起作用,adj_list [0] [0]的结果。第一个没有显示 1

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)

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您使用了错误的括号,这使得(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}}};

答案 1 :(得分: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) } 
                                });