<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
之前有學習過 vector、set、map等容器,都是需要什麼搜什麼,沒有詳細的瞭解其中的內容。最近在看 STL 的相關內容,就順手整理一些基礎性內容,避免以後遇到的時候再臨時抱佛腳。
vector<T> v; //建立一個空的vector vector<T> v(int nSize, const t& t); //建立一個vector,元素個數為nSize,元素值均為t vector<T> v(int nSize); //建立一個vector,元素個數為nSize vector<T> v(const vector&); //複製建構函式 vector<T> v = vector(begin,end); //複製[begin,end]範圍內另一個陣列的元素到 v中
v.push_back(const T& x); //在vector尾部增加一個元素x v.insert(iterator it, const T& x); //在vector中迭代器指向的元素前插入一個元素x v.insert(iterator it, int n,const T& x); //在vector中迭代器指向的元素前插入n個相同的元素x v.insert(iterator it,const_iterator first,const_iterator last); //在vector中迭代器指向的元素前插入另一個相同型別vector中[first,last]間的元素
v.erase(iterator it); //刪除vector中迭代器指向的元素 v.erase(iterator first, iterator last); //刪除vector中[first,last)的元素 v.pop_back(); //刪除vector中的最後一個元素 v.clear(); //清空向量中的所有元素
v.at(int nPos); //返回nPos位置元素 v.front(); //返回vector的首元素 v.back(); //返回vector的尾元素 v.begin(); //返回指向第一個元素的迭代器 v.end(); //返回指向最後一個元素下一位置的迭代器 v.rbegin(); //反向迭代器,指向最後一個元素 v.rend(); //反向迭代器,指向第一個元素的前一個位置
v.empty(); //判斷vector是否為空
v.size(); //返回vector中元素個數 v.capacity(); //返回當前vector中所能容納的最大元素個數 v.max_size(); //返回當前vector最大可允許的元素數量個數
v.swap(vector& v2); //交換兩個同型別的vector v.assign(int n,const T& t); //設定vector中第n個元素的值為t v.assign(const_iterator first,const_iterator last); //vector中[first,last)中的元素設定成當前vector元素
deque(double ended queue) 作為雙端佇列,不論在尾部或頭部插入元素,都十分便捷。而在中間插入元素會比較費時,因為必須移動中間其他的元素。
雙端佇列是一種隨機存取的資料型別,提供了在序列兩端快速插入和刪除的功能,它可以在需要的時候改變自身大小,完成了標準 C++ 資料結構中佇列的所有功能。
雖然 deque 也提供 Random Access Iterator,但它的迭代器並不是普通的指標,複雜度較高。因此除非必要,應儘可能選擇使用 vector 而非 deque。對 deque 的排序操作,可以先完整複製到一個 vector 中,使用 STL 中的排序操作對 vector 排序後,再複製回 deque。
deque 通常由一些獨立的區塊組成,第一個區塊朝某方向擴充套件,最後一個區塊朝另一方向擴充套件。它允許較為快速地隨機存取,但不像 vector 一樣把所有物件儲存在一個連續的記憶體塊,而是多個連續的記憶體塊,並且在一個對映結構中儲存對這些塊以及順序的跟蹤。
#include<deque> deque<type> deq; //宣告一個元素型別為 type 的雙端佇列 deq deque<type> deq(nSize); //宣告含有 nSize 個預設初始化元素的 deq deque<type> deq(nSize, value) //宣告含有 nSize 個值為 value 的元素的deq deque<type> deq(MyDeque); //複製MyDeque到deq deque<type> deq(first, last); //使用迭代器first,last範圍內的元素初始化deq
deq[nPos]; //存取雙向序列中 nPos 位置上的元素 deq.front(); //返回第一個元素 deq.back(); //返回最後一個元素 deq.push_front(x); //把元素 x 插入到 deq 的頭部 deq.pop_front(); //彈出 deq 的第一個元素 deq.push_back(x); //把元素 x 插入到 deq 的尾部 deq.pop_back(); //彈出 deq 的最後一個元素
最近在學習 C++ 中 STL 標準庫中的東西,關於list、vector、deque、set、map等容器的操作函數中存在一些通用函數,整理出來一起學習。
ContType<T> C; //建立一個空容器 ContType<T> C(nSIze); //建立一個含有 nSize 個預設元素的容器 ContType<T> C(nSize, Value); //建立一個含有 nSize 個值為 Value 的元素的容器 ContType<T> C1(C2); //複製一個同型別容器 ContType<T> C(first, last); //複製[first,last)範圍內的元素到新容器中 C.~ContType(); //刪除所有元素,釋放記憶體
C.empty(); //判斷容器是否為空 C1==C2; //判斷c1是否等於c2
lst.get_allocator(); //返回容器的記憶體模型 C.begin(); //正向迭代器,指向第一個元素 C.end(); //正向迭代器,指向最後一個元素的下一位置 C.rbegin(); //反向迭代器,指向最後一個元素 C.rend(); //反向迭代器,指向第一個元素的前一個位置 C.size(); //返回容器當前儲存的元素數量 C.max_size(); //返回容器能容納的最大元素數量
C1=C2;//將c2的值賦給c1 //swap()交換函數 C1.swap(C2);//交換c1和c2的資料 Swap(C1,C2);//同上 //assign()賦值函數 C.assign(size_type nSize, const_type Value); //將list中元素替換為 nSize 個值為 Value 的元素 C.assign(iterator first,iterator last); //將[first,last)中的元素複製到當前容器中 C.assign(ContType<T> &C2); //將另一個容器中的元素複製到當前容器中
C.clear();//清空容器 //insert()插入元素 C.insert(iterator iter, const_type Value);//在 iter 指向的位置插入值為 Value的元素 C.insert(iterator iter,size_type num, const_type &Value);//在 iter 指向的位置插入 num 個值為 Value的元素 C.insert(iterator iter,iterator fisrt,last);//在 iter 指向的位置插入[first,end)區間內的所有元素 //erase()刪除元素 C.erase(nPos,nSize);//刪除從下標 nPos 開始的 nSize 個元素 C.erase(iterstor iter);//刪除該迭代器指向的元素 C.erase(iterator first,iterator lase);//刪除[first,last)區間的元素 //vector、deque、list C.front(); //返回第一個元素 C.back(); //返回最後一個元素 C.resize(); //改變list的大小 //deque、list C.pop_front(); //刪除第一個元素 C.push_front(Value); //在容器頭部新增一個元素Value //vector、deque、list C.front(); //返回第一個元素 C.back(); //返回最後一個元素 C.resize(); //改變list的大小 C.pop_back(); //刪除最後一個元素 C.push_back(Value); //在容器末尾新增一個元素Value //vector、list C.reverse(); //把list中的元素反轉
到此這篇關於C++ 基礎函數的介紹及使用(Vector+deque)的文章就介紹到這了,更多相關C++ deque Vector內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45