c 语言 string库,C语言编程必备资料(包括库函数,string类,stl库模板).docx
主筆:Angel,2016-9-28,當前版本,2.0
PAGE 1
目 錄
1 STL 簡介
2 順序性容器
2.1 C++ VECTOR(向量容器)
2.2 C++ LIST(雙向鏈表)
2.3 C++ DEQUE(雙向隊列)
2.4 三者比較
3 關聯容器
3.1 特點
3.2 C++ SETS & MULTISETS
3.3 C++ MAPS & MULTIMAPS
4 容器適配器
4.1 特點
4.2 C++ STACKS(堆棧)
4.3 C++ QUEUES(隊列)
4.4 C++ PRIORITY QUEUES(優先隊列)
5 迭代器
5.1 解釋
5.2 功能特點
6 C++標準庫總結
6.1 容器
6.2 算法
6.3 函數對象
6.4 迭代器
6.5 分配器
6.6 數值
1 STL 簡介
/reference/stl/更加詳細的資料
C++ STL (Standard Template Library標準模板庫) 是通用類模板和算法的集 合,它提供給程序員一些標準的數據結構的實現如 queues(隊列), lists(鏈表), 和 stacks(棧)等.
C++ STL 提供給程序員以下三類數據結構的實現: 標準容器類
順序性容器
vector 從后面快速的插入與刪除,直接訪問任何元素
deque 從前面或后面快速的插入與刪除,直接訪問任何元素
list 雙鏈表,從任何地方快速插入與刪除
關聯容器
set 快速查找,不允許重復值
multiset 快速查找,允許重復值
map 一對多映射,基于關鍵字快速查找,不允許重復值
multimap 一對多映射,基于關鍵字快速查找,允許重復值
容器適配器
stack 后進先出
queue 先進先出
priority_queue 最高優先級元素總是第一個出列
程序員使用復雜數據結構的最困難的部分已經由STL完成. 如果程序員想使用包 含int數據的stack, 他只要寫出如下的代碼:
stack myStack;
接下來, 他只要簡單的調用 push() 和 pop() 函數來操作棧. 借助 C++ 模板的 威力, 他可以指定任何的數據類型,不僅僅是int類型. STL stack實現了棧的功 能,而不管容納的是什么數據類型.
2 順序性容器
2.1 C++ Vector(向量容器)
是一個線性順序結構。相當于數組,但其大小可以不預先指定,并且自動擴 展。它可以像數組一樣被操作,由于它的特性我們完全可以將vector 看作動態數 組。
在創建一個vector 后,它會自動在內存中分配一塊連續的內存空間進行數據存儲,初始的空間大小可以預先指定也可以由vector 默認指定,這個大小即 capacity ()函數的返回值。當存儲的數據超過分配的空間時vector 會重新分配 一塊內存塊,但這樣的分配是很耗時的,在重新分配空間時它會做這樣的動作:
首先,vector 會申請一塊更大的內存塊;
然后,將原來的數據拷貝到新的內存塊中;
其次,銷毀掉原內存塊中的對象(調用對象的析構函數);
最后,將原來的內存空間釋放掉。
如果vector 保存的數據量很大時,這樣的操作一定會導致糟糕的性能(這也 是vector 被設計成比較容易拷貝的值類型的原因)。所以說vector 不是在什么情 況下性能都好,只有在預先知道它大小的情況下vector 的性能才是最優的。
vector 的特點:
指定一塊如同數組一樣的連續存儲,但空間可以動態擴展。即它可以像數組 一樣操作,并且可以進行動態操作。通常體現在push_back() pop_back() 。
隨機訪問方便,它像數組一樣被訪問,即支持[ ] 操作符和vector.at()
節省空間,因為它是連續存儲,在存儲數據的區域都是沒有被浪費的,但是 要明確一點vector 大多情況下并不是滿存的,在未存儲的區域實際是浪費的。
在內部進行插入、刪除操作效率非常低,這樣的操作基本上是被禁止的。 Vector 被設計成只能在后端進行追加和刪除操作,其原因是vector 內部的實現 是按照順序表的原理。
只能在vector 的最后進行push 和pop ,不能在vector 的頭進行push 和pop 。
當動態添加的數據超過vector 默認分配的大小時要進行內存的重新分配、拷 貝與釋放,這個操作非常消耗性能。 所以要vector 達到最優的性能,最好在創 建vector 時就指定其空間大小。
Vectors 包含著一系列連續存儲的元素,其行為和數組類似。訪問Vector中的 任意元素或從末尾添加元素都可以在常量級時間復雜度內完成,而查找特
總結
以上是生活随笔為你收集整理的c 语言 string库,C语言编程必备资料(包括库函数,string类,stl库模板).docx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言订餐管理系统报告,用c语言编程小型
- 下一篇: c语言标量变量是什么,C语言中的结构和联