#include <iostream>
#include <vector>
using namespace std;
//打印
void printVector(vector<int> &v1) {
for (vector<int>::iterator iterator = v1.begin(); iterator != v1.end(); iterator++) {
cout << *iterator << " ";
}
cout << endl;
}
void test01(){
vector<int> v;
int num = 0;//统计开辟空间的次数
int *p = NULL;
for (int i = 0; i < 9999; ++i) {
v.push_back(i);
//先让p指向v[0]的地址,后续当p的地址不等于v[0]时,说明v[0]的地址变了,也就是重新扩容了(拷贝到了一个新的vector对象)
if(p != &v[0]){
//p指向v[0]的地址
p = &v[0];
//计数
num++;
}
}
cout << "num = " << num;//15
//如果在已知需要存多少数据的情况下,可以预留出9999的空间,就不需要反复开辟了
vector<int> v2;
//预先开辟9999的空间
v2.reserve(9999);
int num2 = 0;//统计开辟空间的次数
int *p2 = NULL;
for (int i = 0; i < 9999; ++i) {
v2.push_back(i);
//先让p指向v[0]的地址,后续当p的地址不等于v[0]时,说明v[0]的地址变了,也就是重新扩容了(拷贝到了一个新的vector对象)
if(p2 != &v2[0]){
//p指向v[0]的地址
p2 = &v2[0];
//计数
num2++;
}
}
cout << "num = " << num2;//1,只开辟了一次大小为9999空间
}
int main(){
test01();
return 0;
}
C++中vector预留空间
最新推荐文章于 2023-11-18 19:14:46 发布