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

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

c++stl庫的基礎(chǔ)學(xué)習(xí)-創(chuàng)新互聯(lián)

stl庫學(xué)習(xí)

學(xué)了之后發(fā)現(xiàn),太棒了,終于可以像python一樣,不用那么麻煩了

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司與策劃設(shè)計,嶺東網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:嶺東等地區(qū)。嶺東做網(wǎng)站價格咨詢:13518219792這里面的東西其實都是可以類比到python那里面的 比如vector就是list,map就是dict,set就是會知道排序的集合,string就不多說了,pair就是小型的dict 就剩下了stack與queue以及bitset 前兩者也是很好理解,queue就是排隊一樣,大的特點是先進先出,而stack就像只有一口的羽毛球筒,后進先出,兩者是相反的,而priority_queue則是會自動排序的queue bitset不就是 bit set嗎?使用進制的方式來表示set(因為是不會有重復(fù)的位置)下面有解釋

所以剩下就只是了解其中的函數(shù)就可以了,不難捏(and 一些注意事項

這里寫目錄標(biāo)題
  • stl庫學(xué)習(xí)
        • 這里面的東西其實都是可以類比到python那里面的
        • 比如vector就是list,map就是dict,set就是會知道排序的集合,string就不多說了,pair就是小型的dict
        • 就剩下了stack與queue以及bitset
        • 前兩者也是很好理解,queue就是排隊一樣,大的特點是先進先出,而stack就像只有一口的羽毛球筒,后進先出,兩者是相反的,而priority_queue則是會自動排序的queue
        • bitset不就是 bit set嗎?使用進制的方式來表示set(因為是不會有重復(fù)的位置)下面有解釋
        • 所以剩下就只是了解其中的函數(shù)就可以了,不難捏(and 一些注意事項
    • vector
    • set
          • 然后就是尋找每個stl的end或是begin其實都是使用了迭代器的方式,所以也就沒什么好說的了
    • string
          • 把string提前,是因為這三個都是一類的可以使用迭代器的東西,并且用法都類似
    • map
    • pair
    • queue
    • priority_queue,其實就是堆,也有幸了解了堆的原理,就是那棵樹
    • stack
    • bitset

vector

創(chuàng)建vector
兩種
直接創(chuàng)建,為空

vectorabc;

創(chuàng)建還有值的

vectorabc={10,10};

添加
兩種
類似append的

abc.push_back(11);

在指定位置插入的
(使用迭代器作為位置選擇)

插入一個數(shù)

abc.insert(abc.begin(),1);

插入2個1

abc.insert(abc.begin(),2,1);

刪除
刪一個,取下標(biāo)

abc.erase(abc.begin());

刪多個,取切片

abc.erase(abc.begin(),abc.begin()+2);

排序
自己指定位置排序

sort(v.begin(),v.end());

倒置

reverse(v.begin(),v.end());

清空

v.clear();

判斷是否為空

v.clear();

取值
類似于python,但是不能切片,只能夠取一個

v[0]

長度

cout<< abc.size();

遍歷
1.用下標(biāo),不說了
2.用迭代器

for(it=vector.begin();it!=vector.end();it++){cout<<*it<<' ';
	}

沒啥說的

set

創(chuàng)建也是兩種,不贅敘

setabc={10,60};

添加元素
由于會自動排序,所以也就沒必要有插入的位置

abc.insert(10);

刪除
由于是不重復(fù)的,所以這個是刪除指定的元素

abc.erase(10);

還有不少的函數(shù)就不多贅敘了

q.clear();		//清空q
q.empty();		//判斷q是否為空,若是返回1,否則返回0
q.size();		//返回q中元素的個數(shù)
q.find(x);		//在q中查找x,返回x的迭代器,若x不存在,則返回指向q尾部的迭代器即 q.end()
然后就是尋找每個stl的end或是begin其實都是使用了迭代器的方式,所以也就沒什么好說的了 string 把string提前,是因為這三個都是一類的可以使用迭代器的東西,并且用法都類似

創(chuàng)建
還是類似的兩者
無自帶的

string s;

自帶的

string s2 =  "Hello";

添加
1.“+”

str += phrase;

但是注意

string s2 =  "Hello" + s + "xxx"  + "xxx";
                   0     1      2         3
    相加必須是string類與“xxxx”類進行相加
    上面可以是因為0與1合并為了string,所以和2相加的時候沒事
    后面是一樣的
    s2 = "Hello" +  "xxx" + s; 
           0        1       2
    不行,因為0與1相加的時候,兩者都不是string

2.append

s2.append("xxxx");
和+類似

3.insert

// 插入
    // 下標(biāo)
    s2.insert(0,2,'s'); 
    
    // 迭代器插入
    s2.insert(s2.begin(),'s');
    // 類似下標(biāo)的方式
    s2.insert(s2.begin(),2,'s');
    // 表示插入兩個

刪除

string x1("value");
    string x2("value");
    string x3("value");
    string x4("value");

    x1.erase();//執(zhí)行后,s1為空
    x2.erase(0,2); //執(zhí)行后,s2為”lue”
    x3.erase(x3.begin());//執(zhí)行后,s3為”alue”
    // 類似取下標(biāo)的方式
    x4.erase(x4.begin(),++x4.begin());//執(zhí)行后,s4為”alue”
    // 切片的方式,和python一樣

replace
老熟人了,但是不一樣,這是通過下標(biāo)來刪除,但是通過find可以達到python的效果

string s2="xxxx";
// replace函數(shù),就是insert與erase的結(jié)合體
    s2.replace(0,2,"aaa");
    // 輸出 aaaxxx

find

cout<< s2.find("x")<< endl;
    // 返回找到的第一個下標(biāo)
    cout<< s2.rfind("a");
    // 返回找到的最后一個的小標(biāo)
map

老熟人了,類似字典

創(chuàng)建

maphaha;

添加
類python

haha["a"]=1;

比較常用的函數(shù)
因為容易理解

haha.clear();     清空
	
	haha.count("a")   !!!這個只用于key/關(guān)鍵字,因為是惟一的,所以只要0/1

	 empty()         如果map為空則返回true

     erase()         刪除一個 關(guān)鍵字+值

     find()          查找一個關(guān)鍵字的迭代器(下面講迭代器怎么用)

     insert()        插入 關(guān)鍵字+值

     size()          返回map中元素的個數(shù)

重點,關(guān)于map迭代器怎么用捏

因為這里雖然有順序(按加入的順序作為迭代器的順序)
但是怎么輸出這個位置的關(guān)鍵字還是值捏?

auto it = haha.begin();
    // frist結(jié)構(gòu)/數(shù)組表示的是關(guān)鍵字
    // second的則是值
    // 因為哪怕你迭代了,也不知道要的是哪一個數(shù)據(jù)
    // 所以在使用迭代器之后要用frist指定是哪一位

    cout<< it->first<< endl; //輸出的是關(guān)鍵字
    cout<< it->second;// 輸出的是值
pair

沒什么好說的
就是單個map
創(chuàng)建

pairanon; 
pairauthor("James","Joy");

和map類似

pairp1;
 
p1.first = 1;
 
p1.second = 2.5;
 
cout<

沒什么好說的
不過注意一點,就是兩個pair之間的比較

paira1(333,"a");
    paira2(666,"b");
    cout<< (a1a1(666,"a");
    paira2(666,"b");
    cout<< (a1a,所以1
queue

先進先出,無迭代器,所以每次只能看到一個元素
創(chuàng)建

queuelala;

second

queuelala({1,23,4});
也可這樣子,順序是1,23,4

常見函數(shù)

push() 在隊尾插入一個元素
pop() 刪除隊列第一個元素
size() 返回隊列中元素個數(shù)
empty() 如果隊列空則返回true
front() 返回隊列中的第一個元素
back() 返回隊列中最后一個元素

因為不能夠使用迭代器了
所以窺探容器只能使用front/back

也不能夠使用clear了,所以只能

while (!lala.empty())
    {lala.pop();
    }
    cout<< lala.size();
priority_queue,其實就是堆,也有幸了解了堆的原理,就是那棵樹

就是會排序的queue沒啥好說的
創(chuàng)建

priority_queueabc;

and以下的區(qū)別
默認(rèn)是大頂堆

//升序隊列,小頂堆
priority_queue, greater>pq;
就是隊伍最前的是最小的

//降序隊列,大頂堆
priority_queue, less>pq;
就是隊伍最前的是大的

其余的操作就和queue沒什么區(qū)別呢捏

stack

這個也沒什么好說的
就是后進先出,想象成一個羽毛球筒即可

創(chuàng)建

stacks1();

second

stacks1({1,23,4});
加入順序就是1,23,4
所以最上面的是  4

常見函數(shù)

size( ) :返回棧中元素個數(shù)
top( ) :返回棧頂?shù)脑?pop( ) :從棧中取出并刪除元素
push(e) :向棧中添加元素e
empty( ) :棧為空時返回true
bitset

非常簡單的理解,給你一個數(shù)組{1,2,3,8,10}
如何快速地進行表示捏?
可以醬紫
1110000101
第幾個位置為1就表示數(shù)組含有第幾個數(shù)字,然后我們又知道位置只會有一個,而且表達方式也只有 有1/無0
所以很清楚的知道為什么是 bit set 了

創(chuàng)建
創(chuàng)建空的

bitset<10>foo;
0000000000

當(dāng)然也可以導(dǎo)入東西
9的二進制的數(shù)值

bitset<5>foo(9);
01001

當(dāng)然,如果二進制的數(shù)值超過了設(shè)置的,那么就會舍棄掉高位的數(shù)值

bitset<3>foo(9);
001
原本是01001

也可以是字符串,但必須全是0/1

bitset<4>foo(string("0101")); 
0101

幾種常見的函數(shù)

foo3=foo&foo2   與,foo與foo2全是1,foo3才是1
foo|foo2   或,一個是就行
~foo		取反
foo^foo2	
foo<<=2		全部左移
foo>>=2		全部右移
foo.size() 返回長度(位數(shù))
foo.count() 返回1的個數(shù)
foo.any() 返回是否有1,有則是1,無則是0
foo.none() 返回是否沒有1,與上面相反
foo.set() 全都變成1


foo.set(p) 將第p + 1位變成1


foo.set(p, x) 將第p + 1位變成x
foo.reset() 全都變成0
foo.reset(p) 將第p + 1位變成0
foo.flip() 全都取反
foo.flip(p) 將第p + 1位取反
————————————————

原文鏈接:https://blog.csdn.net/ywh15387127537/article/details/88707044

特別注意
foo.set§ 將第p + 1位變成1

bit的位置是從右向左的?。。?/p>

bitset<4>foo(9);
	1 0 0 1
	a b c d
    foo.set(1);
    從右向左的第一位,取的是下標(biāo)
    所以應(yīng)該是c的位置
    
    cout<< foo;
    1011

test()
這個位置是否是1,是則返回1

bitset<4>foo(9);
	1 0 0 1
    cout<< foo.test(0);
    返回1

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


當(dāng)前名稱:c++stl庫的基礎(chǔ)學(xué)習(xí)-創(chuàng)新互聯(lián)
本文URL:http://weahome.cn/article/jpojp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部