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

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

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

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

默认情况下,矢量没有任何大小,因此您应该先 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).

Can we do something like this using c++ STLs

是的。虽然,您可能正在使用 standard library

If yes, how am I going to initialize the elements?

初始化元素的方式与初始化不成对向量的元素的方式相同。 List-initialization 是一个不错的选择。

I was trying to do this but it isn't working.

您正在尝试修改从未放置在那里的矢量元素。看看描述 operator[] does. It doesn't state that it adds elements to the vector. There are however, other functions 做什么的页面。