日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c 语言 string库,C语言编程必备资料(包括库函数,string类,stl库模板).docx

發布時間:2025/3/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。