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.first
和 p.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 做什么的页面。
我们可以使用 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.first
和 p.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 做什么的页面。