用对初始化向量
initializing vector with pair
我在用对初始化向量时遇到问题;我的代码似乎不起作用,adj_list[0][0].first 的结果不显示 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)
我该怎么做?
您正在调用 comma operator,插入(不是初始化)的正确语法是
adj_list.insert(adj_list.end(), {
{ make_pair(1,20), make_pair(2,5) },
{ make_pair(1,7), make_pair(0,2) }
});
您使用了错误的括号,这使得 (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}}};
我在用对初始化向量时遇到问题;我的代码似乎不起作用,adj_list[0][0].first 的结果不显示 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)
我该怎么做?
您正在调用 comma operator,插入(不是初始化)的正确语法是
adj_list.insert(adj_list.end(), {
{ make_pair(1,20), make_pair(2,5) },
{ make_pair(1,7), make_pair(0,2) }
});
您使用了错误的括号,这使得 (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}}};