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