1. 容器的概念
容器是用来批量存储数据的集合,数据元素可以是用户自定义类型,也可以是C++预定定义类型。容器类的对象自动申请和释放内存,无需new和delete操作。
容器:顺序容器 和关联容器
顺序容器:元素之间是顺序关系,元素有固定的位置
关联容器:元素之间没有严格物理上的顺序关系。内部是有联系的
顺序容器:Array数组,vector向量,list双向链表,deque
关联容器:map 键值对 ,mulitmap 多重键值对
容器分类如下图所示:
2. 容器的分类
2.1 顺序容器
是一种各个元素直接有顺序关系的线性容器,每个元素都有自己的位置,通过下标或迭代器进行访问,除非删除或者插入的数据改变元素的顺序。
本次学习的顺序容器有:array(数组)、string、vector(向量)、list(列表)、deque(队列)
2.1.1 array(数组)
C++11新增的数组,符合容器的设计规范,使用起来更加方便。
关于array的使用
#include <iostream>
#include <array>
using namespace std;
int main()
{
//创建一个长度为5的int数组
array<int,5> arr = {1,2,3};
//取出对应下标的元素值
cout << arr.at(0) << endl; //1
cout << arr[1] << endl; //2
cout << arr[4] << endl; //0
//更改第四个数据的值为884
arr[3] = 886;
cout << arr[3] << endl;
cout << "-----for------" << endl;
for(int i = 0; i<arr.size();i++)
{
cout << arr.at(i) << " ";
}
cout << endl;
//给所有元素填充一个固定值
arr.fill(521);
cout << "-----foreach------" << endl;
for(int i:arr)
{
cout << i << " ";
}
cout << endl;
return 0;
}
2.1.2 string
string是C++源码中自带的类,类可以包含很多成员函数等。
关于string类的函数个人整理后在下面代码中展示:
#include <iostream>
using namespace std;
int main()
{
//创建一个内容为空的字符串对象
string s;
cout << s.empty() << endl; //1
string s1 = "Monday"; //隐式调用构造函数
string s2("Monady"); //显示调用构造函数
cout << (s1==s2) << endl; //0
st