C++中的对向量初始化



在竞争性编程中,我看到人们初始化向量对,如下所示:

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> ii;
typedef vector<ii> vii;
vector<vii> AL;
int main(){
int V, E; scanf("%d %d", &V, &E);
AL.assign(V, vii());
}

我想问一下AL.assign(V, vii());,我知道AL中会有V对,但这里vii()的含义是什么?

来自参考:

void assign (size_type n, const value_type& val);

新内容是n个元素,每个元素初始化为val的副本。

val

要填充容器的值。中的n个元素中的每一个容器将被初始化为该值的副本。成员类型value_type是容器中元素的类型,在中定义向量作为其第一模板参数(T(的别名。

@user4581301评论道:";vii()构造一个临时变量,该变量将在assign方法中使用,然后超出作用域。幸运的是,临时的副本(假设编译器没有做一些节省时间的把戏(,所以AL不会被留下来引用死空间;。

在中

AL.assign(V, vii());

vii()执行std::vector默认构造函数以提供临时对象,该临时对象将由std::vector::insert用作模板(英语术语,而不是C++template(。该临时将被有效地复制V次,用pairs中的Vvectors填充AL,然后它将超出范围。

最新更新