真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

1.STL六大組件-創(chuàng)新互聯(lián)

. 介紹

STL提供六大組件,它們之間可以彼此套用,如下圖所示:

站在用戶的角度思考問題,與客戶深入溝通,找到合陽網(wǎng)站設(shè)計(jì)與合陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋合陽地區(qū)。

  1. 容器(containers):用于存放數(shù)據(jù);
  2. 算法(algorithms):包含各種常用算法;
  3. 迭代器(iterators):處于容器和算法中間,算法通過迭代器獲取到容器的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行操作;
  4. 仿函數(shù)(functors):行為類似函數(shù),協(xié)助算法完成不同策略變化;
  5. 適配器(adapters):一種用來修飾容器、仿函數(shù)或者迭代器接口的東西;
  6. 配置器(allocators):負(fù)責(zé)底層動(dòng)態(tài)空間配置、空間管理和空間釋放;
1. 六大組件的使用

通過下面簡單的程序,展示了六大組件的使用,具體內(nèi)容如下:

  1. 定義了一個(gè)vector對(duì)象;
  2. 使用allocator為vector對(duì)象管理內(nèi)存;
  3. begin和end返回迭代器,作為算法的輸入;
  4. 使用count_if算法;
  5. 仿函數(shù)less;
  6. not1和bind2nd為functor的adaptor

#include#include 
#include#includeusing namespace std;

int main()
{
??? int ia[6] = {27, 210, 12, 47, 109, 83};
??? vector>vi(ia, ia+6);
??? // bind2nd(less(), 40): 元素小于40的值
??? cout<< count_if(vi.begin(), vi.end(),
??????????? ????????not1(bind2nd(less(), 40)))<< endl;??????? // 4

??? return 0;
}
2. 令人困惑的C++語法

在STL中,有些日常開發(fā)過程中不常見、令人困惑的C++語法,如template 特化和偏特化、臨時(shí)對(duì)象或者function call操作符等等。

2.1 迭代器的前閉后開區(qū)間表示法

一對(duì)迭代器標(biāo)示的區(qū)間是一個(gè)前閉后開的區(qū)間,也即[fisrst, last),整個(gè)實(shí)際范圍從first開始,知道last-1結(jié)束。迭代器last所指的是“最后一個(gè)元素的下一位置“。

2.2 臨時(shí)對(duì)象的產(chǎn)生和使用

臨時(shí)對(duì)象,也稱無名對(duì)象(unnamed objects),通過在template類名稱之間直接加上一個(gè)小括號(hào),并可指定初值,其意義相當(dāng)于調(diào)用相應(yīng)的構(gòu)造函數(shù)constructor,且不指定對(duì)象名稱。

templateclass print
{
private:
??? T text;
public:
??? print() {};
??? print(T elem) : text(elem) {};

??? void operator() ()
??? {
??????? cout<< text<< endl;
??? }
};
int main()
{

??? printobj1 ;???
??? obj1();????
??? printobj2(10);
??? obj2();

??? // unnamed objects
??? print() ();???? // 前一個(gè)()是用來得到臨時(shí)對(duì)象, 后一個(gè)()是用來調(diào)用operator()操作
??? print(20) ();
? ??return 0;
}
2.3 template類的特化和偏特化

template特化指的是模板參數(shù)在特定類型下的具體實(shí)現(xiàn),即將模型中的參數(shù)類型轉(zhuǎn)換為特定(具體)的參數(shù)類型。

偏特化(partial specialization)是模板特化的一種特殊形式。一般來說,特征也稱他為全特化,即將所有的模板參數(shù)替換為具體參數(shù)類型,而偏特化是將部分參數(shù)類型轉(zhuǎn)換為特定類型。

3. 容器的結(jié)構(gòu)

3.1 序列式容器

序列式容器指的是,以線性排列方式(內(nèi)存地址連續(xù))來存儲(chǔ)某一特定類型的數(shù)據(jù),包括array、vector、list、forward_list和deque五種。

array

如下圖所示,array容器的大小,在容器創(chuàng)建之后是固定不變的,即不能增加或者刪除元素,只能修改元素值。

特性如下:

vector

vector容器是一個(gè)長度可變的容器,即在存儲(chǔ)空間不足時(shí),會(huì)通過allocator自動(dòng)申請(qǐng)更多的空間。

特性如下:

list

list容器,以雙向鏈表方式組織元素,支持高效地刪除和插入操作,但訪問元素,需要遍歷整個(gè)鏈表,直到找到目標(biāo)元素。

特性如下:

forward_list

forward_list容器,以單鏈表的形式組織元素,是一類比list容器快、更節(jié)省空間的容器。

deque

deque容器可以進(jìn)行雙向擴(kuò)充,首尾都可以高效插入和刪除元素。

3.2 關(guān)聯(lián)式容器

與序列式容器不同,關(guān)聯(lián)式容器在存儲(chǔ)元素時(shí)會(huì)為每個(gè)元素都配備一個(gè)key,key和元素data以鍵值對(duì)的方式存儲(chǔ)到容器中。關(guān)聯(lián)式容器可以通過key找到對(duì)應(yīng)的元素,且存儲(chǔ)元素時(shí),默認(rèn)會(huì)根據(jù)各元素key的大小做升序排序,因此,關(guān)聯(lián)式容器在查找、訪問、插入和刪除指定元素的效率更高。

map和multi_map

map和multi_map的底層實(shí)現(xiàn)是RB-tree,其中每個(gè)key都對(duì)應(yīng)一個(gè)data,且在map中key值是獨(dú)一無二的,使用multi_map時(shí)意味著key值可以重復(fù)。

map的特性如下:

multi_map的特性如下:

set和multi_set

set和multi_set的底層實(shí)現(xiàn)同樣是RB-tree,且要求key和value值必須相等。

set的特性如下:

unordered_map和unordered_multimap(無序)

unordered_map和unordered_multimap的底層實(shí)現(xiàn)是哈希表,也采用鍵值對(duì)的方式存儲(chǔ)數(shù)據(jù),且鍵值對(duì)是無序的,擅長通過鍵查找對(duì)應(yīng)值,但是使用迭代器遍歷容器中的元素效率不高。

unordered_set和unordered_multiset(無序)

unordered_set和unordered_multiset容器的底層實(shí)現(xiàn)也是哈希表,即鍵值對(duì)是無序的,且key值等于value值。

至此,完成了對(duì)C++的STL簡單介紹,后續(xù)將對(duì)六大組件進(jìn)行詳細(xì)描述。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁題目:1.STL六大組件-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/dpghho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部