vector中resize()、reserve()(

结合上一个博客的思路,我继续对reserve()函数和resize()函数进行了代码分析:

话不多说,直接上代码

(1)vector<T>a(20)形式初始化容器中的元素个数:

#include<iostream>
#include<vector>
using namespace std;
class A
{
private:
int a;
double b;
public:
void initial();
void output();
};
void A::initial()
{
a = 10;
b = 19.09;
}
void A::output()
{
cout << a <<" " <<b << endl;
}
int main()
{
vector<A>a(20);
//a.resize(20);
//只对前10个数进行初始值
for (int i = 0; i < 10; i++)
{
a[i].initial();
}
for (int i = 0; i < 20;i++)
{
a[i].output();
}
cout << "a.size()=" << a.size() << endl;
cout << "a.capacity()=" << a.capacity() << endl;
system("pause");
return 0;

}


(2)resize()分配内存空间时容器中的元素个数

#include<iostream>
#include<vector>
using namespace std;
class A
{
private:
int a;
double b;
public:
void initial();
void output();
};
void A::initial()
{
a = 10;
b = 19.09;
}
void A::output()
{
cout << a <<" " <<b << endl;
}
int main()
{
vector<A>a;
a.resize(20);
//只对前10个数进行初始值
for (int i = 0; i < 10; i++)
{
a[i].initial();
}
for (int i = 0; i < 20;i++)
{
a[i].output();
}
cout << "a.size()=" << a.size() << endl;
cout << "a.capacity()=" << a.capacity() << endl;
system("pause");
return 0;

}


(3)使用reserve()分配内存时容器中的元素个数

#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
a.reserve(20);
//只对前10个数进行初始值
for (int i = 0; i < 10; i++)
{
a.push_back(i);
cout<<"a[i]="<<a[i]<<endl;
}
cout << "a.size()=" << a.size() << endl;
cout << "a.capacity()=" << a.capacity() << endl;
system("pause");
return 0;
}


总结:

(1)首先,reserve()函数和resize()函数两者之间的区别还是reserve只是分配空间,并不会创建文件,而resize在分配空间的同时还会创建元素,并将元素出华为零

(2)其次,reserve()函数分配内存,只能使用push——back添加元素

(3)最后,resize()函数既可以用push_back()函数添加元素,也可以直接用下表索引的形式改变元素值


猜你喜欢

转载自blog.csdn.net/qq_25018077/article/details/80680753
今日推荐