C++ 动态数组与链表

动态数组与链表


动态数组的大小不定,内存连续的,可以根据自己的需要,增加或删除元素。知道第一个元素的,那么就可以知道第二个元素,通过下标访问。如果中间插入一个元素,那么中间后面的元素的下标全部都要改变。
使用前记得引如#include <vector>
链表是一个一个结点在内存中离散的分布。各个结点之间通过元素内部的指针实现的。要查找中间某个元素,必须从第一个元素开始一部一步遍历 ,使用之前记得 #include <list>

*定义一个动态数组(方法很多,这里不多说,自己百度):

    int a[5]={2,4,6,3,5};
	vector<int>  s1(a,a+sizeof(a)/sizeof(int));//int类型的数组,通过一般数组导入方法。
	vector<int>  s2(4,88);//定义s2(元素个数,元素值)

基本的操作:

    int a[5]={2,4,6,3,5};
	vector<int>  s1(a,a+sizeof(a)/sizeof(int));
	vector<int>  s2(4,88);
	int b=s1.at(2);//返回下表为2的元素。
	cout<<b<<endl;
	cout<<s1.size()<<endl;//返回数组元素的个数
	cout<<s1.front()<<endl;//返回首个元素
	cout<<s1.back()<<endl;//返回最后一个元素
	s1.begin();//返回数组第一个元素的下标。返回的迭代器类型。
	s1.end();同上
	bool c=s1.empty();//判断数组是否为空,如果为空,则返回true.否则返回false.
	cout<<c<<endl;
	//s1.clear();//清空数组元素。
	//bool c2=s1.empty();
	//cout<<c2<<endl;
	s1.swap(s2);//交换s1和s2两个数组的元素。
	s1.swap(s2);
	//for(int i=0;i<s1.size();i++)
	//	cout<<s1[i]<<"   ";

	//for(int i=0;i<s2.size();i++)
	//	cout<<s2[i]<<"   ";
	s1.push_back(100);//尾部插入一个元素100.
	/*for(int i=0;i<s1.size();i++)
		cout<<s1[i]<<"   ";*/
	//s1.insert(s1.begin()+2,3,333);//任意位置插入insert(开始插入的位置,(如果插入相同的数,插入的个数),插入的元素)函数
	//for(int i=0;i<s1.size();i++)
	//	cout<<s1[i]<<"   ";
	//s1.insert(s1.end(),a,a+sizeof(a)/sizeof(int));//把普通数组加入到s1中。
	//	for(int i=0;i<s1.size();i++)
	//	cout<<s1[i]<<"   ";
	//s1.pop_back();//删除尾部的一个元素。
	//s1.erase(s1.begin() +2);//删除s1第三个元素。
	//s1.erase(s1.begin() +2 ,s1.end()-2)//删除【s1.begin() +2 ,s1.end()-2】之间的元素,闭合。
//=============================
//代器遍历的方法:
   vector<int>::iterator iter;//要定义遍历的数组种类的迭代器,用法相当于指针。
	for(iter=s1.begin();iter!=s1.end();iter++)
		cout<<*iter<<"--";
	    cout<<endl;



定义一个链表:

	int a[]={1,2,3,4,5};
	list<int> list1(a,a+5);//通过普通数组导入链表

链表的基本操作:
基本操作和动态数组一样,在此基础上增加了。

    int a[]={1,2,3,4,5};
	list<int> list1(a,a+5);
	list1.reverse();//list1中元素倒序
	list1.sort();//list1中元素排序,默认是由小到大。
	list1.remove(2);//移除某个元素。
	list1.push_front(100);//开头插一个元素100.instrt()用法和vector一样。
	list1.pop_front()//删除第一个元素。
	 int ss[4]={7,6,5,4};
	 list1.insert(list1.begin(),ss,ss+2);//普通数组插入链表中。
	 //定义迭代器输出链表。
	list<int>::iterator  itor1 ;
	list<int>::iterator itor2;
	itor1=list1.begin();
	itor2=list1.end();
	for(itor1;itor1!=(itor2);++itor1)
	{
		cout<<*itor1<<endl;

	}
	
原文地址:https://www.cnblogs.com/lixianhu1998/p/12184455.html