C++: 向量,int> >

发布于 2024-11-15 08:50:00 字数 250 浏览 3 评论 0 原文

这就是我想要做的...

vector < pair<vector<int>,int> > var_name (x, pair <vector<int>(y),int>);

其中 x 是向量 var_name 的大小,y 是该对内向量的大小。

上面的语句不起作用,因为pair模板只允许常量。我怎样才能分别将我的向量调整为 x 和 y 的大小?

This is what I am aiming to do...

vector < pair<vector<int>,int> > var_name (x, pair <vector<int>(y),int>);

Where x is the size of the vector var_name and y is the size of the vector inside the pair.

The above statement doesn't work because the pair template only allows constants. How can I go about getting both my vectors to size to x and y respectively?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

岁月静好 2024-11-22 08:50:00
vector<pair<vector<int>,int> > var_name(x, make_pair(vector<int>(y), 0));
vector<pair<vector<int>,int> > var_name(x, make_pair(vector<int>(y), 0));
花心好男孩 2024-11-22 08:50:00

将其简化为:

pair<vector<int>,int> value(vector<int>(y), 0);
vector<pair<vector<int>,int> > var_name(x, value);

如果您喜欢自己的语法,那么您应该这样做:

vector<pair<vector<int>,int> > var_name(x, std::make_pair(vector<int>(y), 0));

Simplify it as:

pair<vector<int>,int> value(vector<int>(y), 0);
vector<pair<vector<int>,int> > var_name(x, value);

If you like your own syntax, then you should be doing this:

vector<pair<vector<int>,int> > var_name(x, std::make_pair(vector<int>(y), 0));
始于初秋 2024-11-22 08:50:00

您可以使用 中的 make_pair 来构造您希望用于初始化 vector 的对。例如:

向量<对<向量,int> > var_name(x, make_pair(vector(y), 42))

或直接调用 pair,int> 构造函数(因为看起来你是试图):

向量<对<向量,int> > var_name(x,pair<向量,int>(向量(y), 0))

You can use make_pair from <utility> to construct the pair you wish to initialize your vector with. For example:

vector< pair<vector<int>,int> > var_name(x, make_pair(vector<int>(y), 42))

or call the pair<vector<int>,int> constructor directly (as it looks like you're trying to):

vector< pair<vector<int>,int> > var_name(x, pair<vector<int>,int>(vector<int>(y), 0))

毁梦 2024-11-22 08:50:00

pair,int> 是类型的名称。对于初始化,您需要一个值。

您可以通过调用该类型的构造函数来获取值(与在语句顶层对 var_name 执行的操作相同)。由于这是在表达式中创建内联值,而不是初始化变量,因此没有变量名称,我们只需编写类似 pair,int>(...)pair,int>(...). ... 是构造函数的参数(将 (y) 放在尖括号内的任何位置是不合逻辑的)。在我们的例子中,我们希望第一个值是长度为 y 的向量,第二个值是...... 0,我假设。

所以我们得到pair,int>(vector(y), 0)。这相当笨重,这就是标准库提供模板函数 std::make_pair 的原因。它通过使用自由函数(可以使用模板参数进行推断)来调用构造函数,绕过了无法为构造函数推断模板参数的事实。

因此,上面的代码缩短为 make_pair(vector(y), 0),当将其代入该行的其余部分时,给出了 Benjamin Lindley 的答案。

pair<vector<int>,int> is the name of a type. For the initialization, you need a value.

You get a value by calling the constructor of the type (the same way that, at the top level of the statement, you're doing for var_name). Since this is creating a value in-line in an expression, rather than initializing a variable, there is no variable name, and we just write something like pair<vector<int>,int>(...). The ... are the arguments for the constructor (putting (y) anywhere inside the angle brackets is illogical). In our case, we want the first value to be a vector of length y, and the second value to be... 0, I assume.

So we get pair<vector<int>,int>(vector<int>(y), 0). That's rather unwieldy, which is why the standard library provides the template function std::make_pair. It gets around the fact that template arguments can't be inferred for constructors, by using a free function (which can do inference with template arguments) to call the constructor.

Thus the above shortens to make_pair(vector<int>(y), 0), which, when substituted into the rest of the line, gives Benjamin Lindley's answer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文