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

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

八、C++STL 6大組件-你必知必會的編程利器

STL這部分推薦直接看《C++ primer》的9到11章內(nèi)容,有非常詳細(xì)的接口列表,還有很多例子。附錄里還有常用的泛型算法,適合經(jīng)??匆幌?/p>

在南州晴隆等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,南州晴隆網(wǎng)站建設(shè)費(fèi)用合理。

vector容器

底層數(shù)據(jù)結(jié)構(gòu):動態(tài)開辟的數(shù)組,每次以原來空間大小的2倍進(jìn)行擴(kuò)容的

vector vec;

deque雙端隊列和list鏈表

初始的元素放在隊列的中間,方便后續(xù)添加元素。外部有一個mapper保存隊列,隊滿的時候會對mapper擴(kuò)容,隊列放在擴(kuò)容后的mapper的sizeof(原來mapper)/2的位置。

deque容器:

list容器

vector、deque、list對比

vecotr和deque之間的區(qū)別?

  • deque底層內(nèi)存是否是連續(xù)的? 不是。deque是由一個二維數(shù)組構(gòu)成的。每一個第二維是連續(xù)的,第一維數(shù)據(jù)不是連續(xù)的。
  • 前中后插入刪除的時間復(fù)雜度:中間和末尾是O(1),前面插入deque是O(1),vector是O(n)
  • 對于內(nèi)存的使用效率: vector的低,需要的內(nèi)存空間必須是連續(xù)的。deque可以分塊進(jìn)行存儲,不需要內(nèi)存空間必須是連續(xù)的。
  • 由于deque的第二維內(nèi)存空間不是連續(xù)的,所以在deuqe中間進(jìn)行元素的insert或者erase,造成元素移動的時候臂vector要慢

vector和list之間的區(qū)別?

  • list底層是雙向循環(huán)鏈表
  • list的增加刪除是O(1),vector增加刪除是O(n)

詳解容器適配器

無序關(guān)聯(lián)容器

unordered_set:

unordered_map:

map的operator[]重載有兩個功能:一是查詢,二如果key不存在,會插入一對數(shù)據(jù)

unordered_map mp1;
mp1.insert(make_pair(12,"asf"));//生成pair類型
mp1.insert({123,"asfsaf"});

有序關(guān)聯(lián)容器

底層是紅黑樹結(jié)構(gòu)。

自定義類型如何在有序容器中排序:要在自定義類型中提供小于運(yùn)算符的重載

容器的迭代器

函數(shù)對象

函數(shù)對象就是C語言里的函數(shù)指針

把有operator()小括號運(yùn)算符重載函數(shù)的對象,稱作函數(shù)對象或者稱作仿函數(shù)。

好處:

  • 通過函數(shù)對象調(diào)用operator(),可以省略函數(shù)的調(diào)用開銷,比通過函數(shù)指針調(diào)用函數(shù)(不能夠inline內(nèi)聯(lián)調(diào)用)效率高。
  • 因?yàn)楹瘮?shù)對象使用類生成的,所以可以添加相關(guān)的成員變量,用來記錄函數(shù)對象使用時的更多的信息。
template
bool mygreater(T a, T b) {
    return a > b;
}

template
bool myless(T a, T b) {
    return a < b;
}

template
class Myless{//函數(shù)對象
public:
    bool operator()(T a,T b){
        return a
bool compare(T a, T b, Compare comp) {//使用函數(shù)指針或者函數(shù)對象調(diào)用前面定義的兩個函數(shù)
    return comp(a, b);//在使用函數(shù)指針的時候無法聲明為inline函數(shù),效率低
}

int main() {
    cout << compare(10, 30, mygreater)<())<

函數(shù)對象的一些其他用法:用于priority_queue和set:

priority_queue,Mygreater> queue1;
priority_queue queue2;

for(int i=0;i<20;i++){
    queue1.push(rand()%100);
    queue2.push(rand()%100);
}

for(int i=0;i<20;i++){
    cout< set1;
set> set2;

for(int i=0;i<20;i++){
   set1.insert(rand()%100);
   set2.insert(rand()%100);
}

for(int a:set1){
    cout<

泛型算法和綁定器


當(dāng)前題目: 八、C++STL 6大組件-你必知必會的編程利器
新聞來源:http://weahome.cn/article/dsoipse.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部