1.array容器
需引入头文件array
特点 :开辟的空间是连续的且固定的 不可临时扩容或删除
模板参数<数组中元素类型,数组容量>
代码如下
#include<iostream>
using namespace std;
#include<array>
//数组容器
int main()
{
array<int, 10> arr = { 1,2,3,4,5 };
array<double, 10> arr1 ;
arr.at(5) = 6;
//at函数类似下标访问
for (int i = 0; i < 10; i++)
{
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
2.vector
需引入头文件arra
特点 :开辟的空间是连续的且不固定的 可临时扩容或删除
在vector容器中 包含了以下函数size 和 capacity
数组中元素的个数 数组容量
模板参数<数组中元素类型>
常用的操作方法
vec1.push_back(100); //添加元素
int size = vec1.size(); //元素个数
bool isEmpty = vec1.empty(); //判断是否为空
cout<<vec1[0]<<endl; //取得第一个元素
vec1.insert(vec1.end(),5,3); //从vec1.back位置插入5个值为3的元素
vec1.pop_back(); //删除末尾元素
vec1.erase(vec1.begin(),vec1.end());//删除之间的元素,其他元素前移
cout<<(vec1==vec2)?true:false; //判断是否相等==、!=、>=、<=...
vector<int>::iterator iter = vec1.begin(); //获取迭代器首地址
vector<int>::const_iterator c_iter = vec1.begin(); //获取const类型迭代器
vec1.clear(); //清空元素
在这里我们实现了对vector类型的vec1的元素插入
vector <char> vec1 ;
vec1.push_back('S') ;
vec1.push_back('T');
vec1.push_back('L');
vector <char> ::iterator ite=vec1.begin();
static int Mark = 0;
while (ite!=vec1.end())
{
if (*ite == 'T'&&Mark!=1)
{
ite = vec1.insert(ite,'C');
Mark = 1;
}
cout << *ite << endl;
ite++;
}
用到了一个标记Mark 否则遍历将陷入死循环
完整代码如下
#include<iostream>
using namespace std;
#include<vector>
int main()
{
vector <int> vec;
/*cout << "size=" << vec.size() << " capacity " << vec.capacity() << endl;
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << endl;
}
vec.push_back('a');
cout << "size=" << vec.size() << " capacity " << vec.capacity() << endl;
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << endl;
}*/
vector <char> vec1 ;
vec1.push_back('S') ;
vec1.push_back('T');
vec1.push_back('L');
vector <char> ::iterator ite=vec1.begin();
static int Mark = 0;
while (ite!=vec1.end())
{
if (*ite == 'T'&&Mark!=1)
{
ite = vec1.insert(ite,'C');
Mark = 1;
}
cout << *ite << endl;
ite++;
}
for (int i = 0; i < 15; i++)
{
vec.push_back(i);
cout << "size=" << vec.size() << " capacity " << vec.capacity() << endl;
}
//size是实际元素的个数
//capacity是数组中共有多少元素(包含未被初始化的元素)
return 0;
}
3.List类型
list类型容器是一个链表性容器
常用初始化方法
list<int> lst;
常用的操作
lst1.assign(lst2.begin(),lst2.end()); //分配值
lst1.push_back(10); //添加值
lst1.pop_back(); //删除末尾值
lst1.begin(); //返回首值的迭代器
lst1.end(); //返回尾值的迭代器
lst1.clear(); //清空值
bool isEmpty1 = lst1.empty(); //判断为空
lst1.erase(lst1.begin(),lst1.end()); //删除元素
lst1.front(); //返回第一个元素的引用
lst1.back(); //返回最后一个元素的引用
lst1.insert(lst1.begin(),3,2); //从指定位置插入3个值为2的元素
lst1.rbegin(); //返回第一个元素的前向指针
lst1.remove(2); //相同的元素全部删除
lst1.reverse(); //反转
lst1.size(); //含有元素个数
lst1.sort(); //排序
lst1.unique(); //删除相邻重复元素
在这里 我们对这样一个链表进行显示和插入
利用迭代器遍历
1->2->3->4
list<int> lst;
lst.push_back(1);
lst.push_back(2);
lst.push_front(3);
lst.push_front(4);
list<int>::iterator ite = lst.begin();
while (ite != lst.end())
{
cout << *ite << endl;
ite++;
}
ite = lst.begin();
while (ite != lst.end())
{
if (*ite == 1 )
{
ite = lst.insert(ite, 4);
break;
}
ite++;
}
cout << endl;
在1的前面插入4
在进行显示
文章部分参考