C++ array vector List 容器 学习笔记

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

在进行显示

 

文章部分参考

C++容器亲自总结_追光少年羽的博客-CSDN博客_c++容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值