我们可以使用c ++ STL做这样的事情。如果是,我将如何初始化元素?我试图这样做,但它没有工作。
pair<vector<int>,vector<int>>p;
p.first[0]=2;
答案 0 :(得分:5)
我们可以使用c ++ STLs做这样的事吗
是。虽然,您可能正在使用standard library。
如果是,我将如何初始化元素?
初始化元素的方式与初始化不在一对中的向量元素的方式相同。 List-initialization是一个很好的选择。
我试图这样做,但它不起作用。
您正在尝试修改您从未放置过的矢量元素。看看有关operator[]所做内容的页面。它没有声明它向向量添加元素。但是,other functions可以做到。
答案 1 :(得分:4)
默认情况下,矢量没有任何大小,因此您应首先push_back
某些元素或resize
。初始化p的方法是:
pair<vector<int>, vector<int>> p = {{1,2,3}, {4,5,6}};
答案 2 :(得分:2)
p.first
和p.second
(类型为std::vector<int>
)将被初始化,但它们仍然是空的,其中没有元素。然后p.first[0] = 2;
将导致UB。
你可能想要
p.first.push_back(2);
答案 3 :(得分:1)
是的,但它必须在访问其元素之前为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).