C++: 对<向量<int>,向量<int>> p;

C++: pair<vector<int>,vector<int>> p;

本文关键字:gt lt int 向量 C++      更新时间:2023-10-16

我们可以使用 c++ STL 做这样的事情吗?如果是,我将如何初始化元素?我试图这样做,但它不起作用。

 pair<vector<int>,vector<int>>p;
 p.first[0]=2;

我们可以使用 c++ STL 做这样的事情吗

是的。虽然,您可能正在使用标准库。

如果是,我将如何初始化元素?

初始化元素

的方式与初始化不在对中的向量的元素的方式相同。列表初始化是一个简洁的选项。

我试图这样做,但它不起作用。

您正在尝试修改从未放在那里的向量元素。看看描述运算符 [] 做什么的页面。它没有说明它将元素添加到向量。但是,还有其他功能可以。

默认情况下,向量没有任何大小,因此您应该先push_back一些元素或resize它们。初始化 p 的一种方法是:

pair<vector<int>, vector<int>> p = {{1,2,3}, {4,5,6}};

p.firstp.second(类型为 std::vector<int>)将被初始化,但它们仍然是空的,其中没有元素。然后p.first[0] = 2;将导致 UB。

你可能想要

p.first.push_back(2);

是的,它可以工作,但是在访问其元素之前,您必须为std::vector分配内存:

//p now can hold 1 element
p.first.resize(1);

或者,您可以使用push_back

//p now has 1 element with value 2
p.first.push_back(2).