动态数组类:vector
前言:
在程序设计过程中,如果我们知道数组的长度,可以定义静态数组。实际上,我们会经常遇到数组长度在一开始并不能确定的情况,那么这个时候就需要考虑用动态数组了,这样不仅节省了存储的内存,还使得程序更加灵活可靠。
1.vector的特点
vector是个模板类,提供了动态数组的通用功能,特点如下:
(1)在数组末尾添加(删除)元素所需的时间是固定的。
(2)在数组中间添加(删除)元素所需的时间与该元素后面的元素个数成正比
(3)存储的元素是动态的,而vector类负责管理内存。
2.常用的vector操作
下面给出了五种初始化(实例化)的方法:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//1.初始化一个动态数组dyarr1
vector <int> dyarr1;
//2.初始化一个动态数组dyarr2,数组的初始长度是10
vector <int> dyarr2(10);
//3.初始化一个动态数组dyarr3,包含10个元素,每个元素都是1
vector <int> dyarr3(10,1);
//4.将动态数组dyarr3复制到dyarr4
vector <int> dyarr4(dyarr3);
//5.使用迭代器,将dyarr4中的前5个元素复制到dyarr5
vector <int> dyarr5(dyarr4.begin(),dyarr4.begin()+5);
for(int i=0;i<dyarr5.size();i++)
cout<<dyarr3[i]<<endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
注意:vector <类型> dyarr //这里的类型不仅是int,也可以是float、类、vector等
3.常用的操作函数
3.1在末尾插入元素push_back()
//在数组dyarr1后添加一个元素50
dyarr1.push_back(50)
- 1
- 2
3.2在指定位置插入元素insert()
push_back可以在末尾插入元素。如果要在中间插入元素,可以使用insert()
下面举例三种插入方法:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector <int> dyarr1(5,10);
//1.在数组dyarr1前插入20
dyarr1.insert(dyarr1.begin(),20);
//2.在数组dyarr1末尾插入两个30
dyarr1.insert(dyarr1.end(),2,30);
//3.将数组dyarr2插入到dyarr1第一个元素的后面(后面的元素依次后移)
vector <int> dyarr2(2,50);
dyarr1.insert(dyarr1.begin()+1,dyarr2.begin(),dyarr2.end());
//显示dyarr1的每一个元素
for(int i=0;i<dyarr1.size();i++)
cout<<dyarr1[i]<<" ";
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
3.3删除末尾元素pop_back()
pop_back将元素从vector末尾删除所需的时间是固定的,不随存储元素的个数而变。
//删除dyarr1最后一个元素
dyarr1.pop_back();
- 1
- 2
3.4访问vector元素的三种方法
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector <int> dyarr1(5,10); //初始化数组5个元素都是10
//1.用下标运算符[]以数组方式访问
for(int i=0;i<dyarr1.size();i++)
cout<<dyarr1[i]<<" ";
cout<<endl;
//2.用成员函数at()访问
for(int i=0;i<dyarr1.size();i++)
cout<<dyarr1.at(i)<<" ";
cout<<endl;
//3.使用迭代器意义访问打印出来(类似于指针)
vector <int>::iterator Locator=dyarr1.begin();
while(Locator!=dyarr1.end())
{
cout<<*Locator<<" ";
++Locator;
}
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
4.动态数组deque类
deque类与vector类非常类似,但是支持在数组的开头和末尾插入或删除元素。
使用前需要包含头文件:
#include <deque>
- 1
(1)使用push_back和pop_back在末尾插入和删除元素
deque <int> dyarr1(5,10); //初始化数组5个元素都是10
dyarr1.push_back(100);
dyarr1.pop_back();
- 1
- 2
- 3
(2)使用push_front和pop_front在开头插入和删除元素
dyarr1.push_front(100);//在数组开头插入100
dyarr1.pop_front();//删除数组开头的元素
- 1
- 2
5.总结
(1)当不知道需要存储多少个元素时,务必使用动态数组vector或deque
(2)vector只能在末尾进行插入或删除,deque在开头和末尾都可以进行插入和删除操作。
文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。
原文链接:ai-wx.blog.csdn.net/article/details/105101009
- 点赞
- 收藏
- 关注作者
评论(0)