C ++:pair <vector <int>,vector <int>&gt;磷;

时间:2016-06-02 10:14:24

标签: c++ vector stl std-pair

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

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

4 个答案:

答案 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.firstp.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).