【发布时间】:2019-04-10 13:48:44
【问题描述】:
C++:vector<pair<int,int>>v(size); 在我尝试打印值时将 0 显示为值,但是当未声明向量大小时,它是否显示正确的输出?为什么这样?
例如:
int x;
cin>>x;
vector<pair<int,int>>v(x); //Size declared.
for(int i=0;i<x;i++){
int p,q;
cin>>p>>q;
v.push_back(make_pair(p,q));
}
但是当我尝试打印值时,它只打印 0。
I/P->
3
1 2
3 4
5 6
O/P->
0 0
0 0
0 0
但是当我不声明向量的大小时,它会打印输出而没有任何错误,这是为什么呢? 即
int x;
cin>>x;
vector<pair<int,int>>v; //Size is not declared.
for(int i=0;i<x;i++){
int p,q;
cin>>p>>q;
v.push_back(make_pair(p,q));
}
I/P->
3
1 2
3 4
5 6
O/P->
1 2
3 4
5 6
它显示正确的输出。这是为什么呢?
【问题讨论】:
-
将
v.push_back(make_pair(p,q))替换为v[i] = make_pair(p,q)。或将vector<pair<int,int>>v(x);替换为vector<pair<int,int>>v; v.reserve(x); -
@LakshayGarg 我个人更喜欢后一种方法,它(通常)效率更高。