您好,登錄后才能下訂單哦!
1、vector的基本操作
(1)、對動態數組元素的添加和刪除、獲取
代碼如下:
#include<iostream> #include<vector> using namespace std; //數組元素的添加和刪除、獲取 int main(void){ vector<int> v1; v1.push_back(1); v1.push_back(2); v1.push_back(3); cout<<"len:"<<v1.size()<<endl; cout<<"獲取頭部元素:"<<v1.front()<<endl; //修改頭部、尾部元素的值 //函數返回值當左值,應該返回一個引用; v1.front() = 11; v1.back() = 55; while(v1.size() > 0){ cout<<v1.back()<<" "; //獲取尾部元素; v1.pop_back(); //刪除尾部元素 } cout<<endl; }
(2)、vector的初始化
代碼如下:
#include<iostream> #include<vector> using namespace std; void printV(vector<int> &v){ for(int i = 0; i < v.size(); i++){ cout<<v[i]<<" "; } cout<<endl; } int main(void){ //vector類 vector<int> v1; v1.push_back(1); v1.push_back(3); v1.push_back(5); v1.push_back(7); vector<int> v2 = v1; //對象初始化 vector<int> v3(v1.begin(), v1.begin()+2); //對象初始化 /* //vector的遍歷 for(i =a 0; i < v1.size(); i++){ v1[i] = i + 1; } int i; for(i = 0; i < v1.size(); i++){ cout<<v1[i]<<" "; } cout<<endl; */ printV(v1); //push_back()的強化記憶; vector<int> v5(10); //前10個元素初始化為0; v5.push_back(100); v5.push_back(200); printV(v5); return 0; }
(3)、vector中迭代器的正向和反向遍歷
代碼如下:
#include<iostream> #include<vector> using namespace std; int main(void){ vector<int> v1(10); //初始化空間的值都為0; for(int i = 0; i < 10; i++){ v1[i] = i+1; } //迭代器 //1(begin)、3、5 、(end) 當it = v1.end()的時候,說明這個容器已經遍歷完了; //end()的位置,應該是5的后面; //正向遍歷 vector<int>::iterator it; for(it = v1.begin(); it != v1.end(); it++){ cout<<*it<<" "; } cout<<endl; //反向遍歷 vector<int>::reverse_iterator rit; for(rit = v1.rbegin(); rit != v1.rend(); rit++){ cout<<*rit<<" "; } cout<<endl; return 0; }
(4)、vector中的元素刪除操作
代碼如下:
#include<iostream> #include<vector> using namespace std; void printV(vector<int> &v){ for(int i = 0; i < v.size(); i++){ cout<<v[i]<<" "; } cout<<endl; } //刪除 int main(void){ vector<int> v1(10); for(int i = 0; i < 10; i++){ v1[i] = i + 1; } //區間刪除 v1.erase(v1.begin(), v1.begin()+3); //刪除開始的3個元素 //指定(元素)位置刪除 v1.erase(v1.begin()); //在頭部刪除一個 //根據元素的值 v1[1] = 2; v1[3] = 2; vector<int>::iterator it; for(it = v1.begin(); it != v1.end(); it++){ if(*it == 2){ v1.erase(it); //刪除的是元素,參數是迭代器 } } v1.insert(v1.begin(), 100); v1.insert(v1.end(), 200); printV(v1); return 0; }
2、deque的基本操作
雙端數組的基本操作;
代碼如下:
#include<iostream> #include<deque> #include<algorithm> using namespace std; void printD(deque<int> &d){ deque<int>::iterator it; for(it = d.begin(); it != d.end(); it++){ cout<<*it<<" "; } cout<<endl; } int main(void){ deque<int> d1; d1.push_back(1); d1.push_back(3); d1.push_back(5); d1.push_front(-11); d1.push_front(-33); d1.push_front(-55); cout<<"頭部元素:"<<d1.front()<<endl; cout<<"尾部元素:"<<d1.back()<<endl; printD(d1); d1.pop_front(); d1.pop_back(); printD(d1); //查找-33在數組中的下標 deque<int>::iterator it; it = find(d1.begin(), d1.end(), -33); if(it != d1.end()){ cout<<"-33數組的下標是:"<<distance(d1.begin(), it)<<endl; //查找下標; }else{ cout<<"沒有找到值為-33"<<endl; } return 0; }
3、stack的基本操作
代碼如下:
#include<iostream> #include<stack> using namespace std; class Teacher{ public: void printS(){ cout<<"age :"<<age<<endl; } public: int age; char name[15]; }; int main(void){ Teacher t1,t2,t3; t1.age = 31; t2.age = 32; t3.age = 33; stack<Teacher *> s; s.push(&t1); s.push(&t2); s.push(&t3); while(!s.empty()){ Teacher *tmp = s.top(); tmp->printS(); s.pop(); } return 0; } /* int main(void){ Teacher t1,t2,t3; t1.age = 31; t2.age = 32; t3.age = 33; stack<Teacher> s; s.push(t1); s.push(t2); s.push(t3); while(!s.empty()){ Teacher tmp = s.top(); tmp.printS(); s.pop(); } return 0; } */ /* int main(void){ stack<int> s; //入棧 for(int i = 0; i < 10; i++){ s.push(i+1); } cout<<s.size()<<endl; //棧的大小 //出棧 while(!s.empty()){ int tmp = s.top(); //獲取棧頂元素 cout<<tmp<<" "; s.pop(); } cout<<endl; return 0; } */
4、queue的基本操作
代碼如下:
#include<iostream> #include<queue> using namespace std; class Teacher{ public: int age; char name[25]; public: void printQ(){ cout<<"age :"<<age<<endl; } }; int main(void){ Teacher q1, q2, q3; q1.age = 31; q2.age = 32; q3.age = 33; queue<Teacher *> q; q.push(&q1); q.push(&q2); q.push(&q3); while(!q.empty()){ Teacher *tmp; tmp = q.front(); //獲取隊列頭的元素 tmp->printQ(); q.pop(); } return 0; } /* //隊列中的基礎數據類型, int main(void){ queue<int> q; q.push(1); q.push(2); q.push(3); cout<<"對頭元素:"<<q.front()<<endl; cout<<"隊列的大小"<<q.size()<<endl; while(!q.empty()){ cout<<q.front()<<" "; q.pop(); } cout<<endl; return 0; } */
5、priority_queue的基本操作
代碼如下:
#include<iostream> #include<queue> using namespace std; int main(void){ priority_queue<int> p1; //默認的情況下:是最大優先級隊列; priority_queue<int, vector<int>, less<int> > p2; priority_queue<int, vector<int>, greater<int> > p3; //是最小的優先級隊列 p1.push(33); p1.push(11); p1.push(22); p1.push(77); p1.push(55); p1.push(99); cout<<"隊頭元素:"<<p1.top()<<endl; cout<<"隊列的大小:"<<p1.size()<<endl; while(!p1.empty()){ cout<<p1.top()<<" "; //獲取隊頭的是top(); p1.pop(); } cout<<endl; cout<<"--------------------測試最小值優先級隊列---------------------"<<endl; p3.push(33); p3.push(11); p3.push(22); p3.push(77); p3.push(55); p3.push(99); cout<<"隊頭元素:"<<p3.top()<<endl; cout<<"隊列的大小:"<<p3.size()<<endl; while(!p3.empty()){ cout<<p3.top()<<" "; //獲取隊頭的是top(); p3.pop(); } cout<<endl; return 0; }
6、list的基本操作
(1)、list的遍歷
代碼如下:
#include<iostream> #include<list> using namespace std; void printL(list<int> &l){ list<int>::iterator it; for(it = l.begin(); it != l.end(); it++){ cout<<*it<<" "; } cout<<endl; } //迭代器中的begin()和end()代表的含義:begin代表的是第一個元素的位置,end代表的是最后一個元素的下一個元> 素的位置; int main(void){ list<int> l; cout<<"list的大小:"<<l.size()<<endl; for(int i = 0; i < 10; i++){ l.push_back(i); } printL(l); //list不能隨即訪問; list<int>::iterator it = l.begin(); it++; it++; it++; l.insert(it, 100); //STL中的插入默認是前插; printL(l); //1、list鏈表的節點的index是從0位置開始的 //2、insert方法都是默認的前插 return 0; }
(2)、list的刪除
代碼如下:
#include<iostream> #include<list> using namespace std; void printL(list<int> &l){ list<int>::iterator it; for(it = l.begin(); it != l.end(); it++){ cout<<*it<<" "; } cout<<endl; } //list刪除 int main(void){ list<int> l; for(int i = 0; i < 10; i++){ l.push_back(i); } list<int>::iterator it1 = l.begin(); list<int>::iterator it2 = l.begin(); it2++; it2++; it2++; l.erase(it1, it2); //刪除是左閉右開的操作;[0, 3) printL(l); l.erase(l.begin()); printL(l); l.insert(l.begin(), 100); l.insert(l.begin(), 100); l.insert(l.begin(), 100); l.insert(l.begin(), 100); l.insert(l.begin(), 100); printL(l); l.remove(100); //刪除元素的方法,刪除了所有值為100的元素; printL(l); return 0; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。