gpt4 book ai didi

c++ - vector <对<整数,整数>>v(大小);打印时显示 0 作为值

转载 作者:行者123 更新时间:2023-11-30 01:35:50 27 4
gpt4 key购买 nike

C++:vector<pair<int,int>>v(size);当我试图打印出值时显示 0 作为值,但是当未声明 vector 大小时它显示正确的输出?为什么这样?例如:

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

但是当我没有声明 vector 的大小时,它会毫无错误地打印输出,这是为什么呢?即

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

它显示了正确的输出。这是为什么?

最佳答案

这是因为 vector 的构造函数接受一个整数(它是 size_t 类型)不仅提供了足够的大小,而且创建了 x 个默认对象。然后,您您的新对象附加到这些默认对象。

请注意,STL 措辞中的术语“大小”是指已插入/包含的元素数,无需重新分配即可容纳的元素总数称为“容量”。

如果你想预先分配足够的容量而不创建新对象,你需要使用reserve:

std::vector<std::pair<int,int>> v;
v.reserve(x);

关于c++ - vector <对<整数,整数>>v(大小);打印时显示 0 作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53184258/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com