動態數組與鏈表
動態數組的大小不定,內存連續的,可以根據自己的需要,增加或刪除元素。知道第一個元素的,那么就可以知道第二個元素,通過下標訪問。如果中間插入一個元素,那么中間后面的元素的下標全部都要改變。
使用前記得引如#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;
}