色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c11容器常用方法

傅智翔2年前28瀏覽0評論

c11容器常用方法?

1.vector:

vector<int> v;

vector<int> v(10);//定義大小為10的int型向量容器。

vector<int> v(10,3);//定義大小為10,每個元素為3。

v.push_back(2);//尾部添加元素2.

v.pop_back();//尾部刪除一個元素.

v[0]=2;

v[1]=3;//下標訪問。

vector<int>::iterator it;//迭代器訪問

for(it=v.begin();it!=v.end();it++)

{

cout<<*it<<" ";

}

//元素插入,插入位置必須是迭代器位置

v.insert(v.begin(),8);//最前面插入

v.insert(v.begin()+2,8);

v.insert(v.end(),8);//末尾追加

//元素刪除

v.erase(v.begin()+2);//刪除第2+1個元素

v.erase(v.begin()+1,v.begin()+5);//刪除迭代器第一到第五區間的所有元素

v.clear();//刪除所有元素

reverse(v.begin(),v.end());//反向排列向量所有元素(可以反向排列某段迭代器區間元素)

sort(v.begin(),v.end());//sort排序(默認升序排列)

//設計排序比較函數

bool comp(const int& a,const int& b)

{

return a>b;//降序排列

}

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

v.size();//返回向量大小,即元素個數

v.empty();//判空,空時返回1,不空時返回0。

2.stack:

//堆棧容器

stack<int> s;

s.push(1);//入棧

s.pop();//出棧

s.top();//返回棧頂元素

s.size();//返回元素個數

s.empty();//判空

3.queue:

//隊列容器

//只能從隊尾插入元素,隊首刪除元素

queue<int> q;

q.push(1);//入隊

q.pop();//出隊

q.front();//返回隊首元素

q.back();//返回隊尾元素

q.size();//返回元素個數

q.empty();//判空

4.priority_queue:

//優先隊列容器

//只能從隊尾插入元素,隊首刪除元素

//隊列中最大的元素總是位于隊首(默認從大到小排序,自己可以自定義比較函數來修改)

priority_queue<int> pq;

pq.push(1);//入隊

pq.pop();//出隊

pq.top();//返回隊首元素

pq.size();//返回元素個數

pq.empty();//判空

//自定義比較函數

元素為結構體:

struct info

{

string name;

float score;

bool operator < (const info &a) const

{

return score>a.score;//從小到大(注意這次的符號)

}

};

元素非結構體:

struct mycomp

{

bool operator () (const int &a,const int &b) const

{

return a>b;//從小到大(注意這次的符號)

}

};

priority_queue<int,vector<int>,mycomp> pq;//顯示說明其內部結構是vector.(注意:當有自定義比較函數時,必須顯示說明其內部結構是vector!)

5.deque:

創建

deque<int> d;

deque<int> d(10);//容量為10

deque<int> d(10,8.5);//10個并初始化為8.5

插入:

push_back()尾部插入,擴張隊列

push_front()頭部插入,不擴張隊列,往后擠,把尾部的元素擠出去了

以上兩個參數是一個元素對象

insert()中間某位置插入元素,不擴張隊列,仍是擠出尾部的元素

參數為兩個:迭代器位置+元素對象

eg:d.insert(d.begin()+1,88);//即插入到第二個位置,后面的往后順延,最后一個丟失

遍歷:

d[i]//數組方式

deque<int>::iterator it;

for(it=d.begin();it!=d.end();it++)

{

cout<<*it<<" ";

}//前向迭代器方式

deque<int>::reverse_iterator it;

for(rit=d.rbegin();rit!=d.rend();rit++)

{

cout<<*rit<<" ";

}//反向迭代器方式

刪除:

首部:d.pop_front();

尾部:d.pop_back();

中間:d.erase(d.begin()+1);

清空:d.clear();

6.set:

#include <set>

#include <algorithm>

//不會重復插入相同鍵值的元素

//采用紅黑樹的平衡二叉檢索樹結構,中序遍歷

set<int> s;

s.insert(3);//默認從小到大

set<int>::iterator it;

for(it=s.begin();it!=s.end();it++)

{

cout<<*it<<" ";

}

//反向遍歷

set<int>::reverse_iterator rit;//反向迭代器

for(rit=s.rbegin();rit!=s.rend();rit++)

{

cout<<*rit<<" ";

}

//元素刪除,刪除對象可以是某個迭代器位置上的元素、等于某鍵值的元素、一個區間上的元素

s.erase(s.begin()+1);

s.erase(6);

s.erase(s.begin(),s.begin()+4);

s.clear();

s.size();

s.find(6);//查找鍵值6,查到了則返回其迭代器位置,否則返回最后一個元素后面的位置,即end()

set<int>::iterator it;

it=s.find(6);

if(it!=s.end())

cout<<*it<<endl;

//自定義比較函數 默認從小到大存儲

//非結構體元素

struct comp

{

bool operator () (const int& a,const int& b) const

{

return a>b;//從大到小

}

}

set<int,comp> s;//創建

set<int,comp>::iterator it;

其他操作一樣

//結構體元素

struct info

{

string name;

float score;

bool operator < (const info &a) const

{

return score>a.score;//從大到小

}

}

set<info> s;//創建

set<info>::iterator it;

7.multiset:

#include <set>

#include <algorithm>

//允許重復的元素鍵值插入

//在插入,刪除,查找方面與<set>有區別

multiset<string> ms;

ms.insert("abc");

multiset<string>::iterator it;

//erase()可以刪除某個迭代器位置的元素,某段區間的元素,鍵值等于某個值的所有重復元素(并返回刪除元素個數)。

ms.erase("123");

ms.clear();

//find(),如果查到,返回該元素第一次出現的迭代器位置,否則返回end()

it=ms.find("123");

8.map:

#include <map>

#include <algorithm>

//不會重復插入相同鍵值的元素

//采用紅黑樹的平衡二叉檢索樹結構,中序遍歷

//比較函數只對鍵值進行比較

//和set使用大都相同

map<string,float> m;

m["jack"]=98.5;//插入元素

m.insert(pair<string,float>("lvhuan",18.5));

map<string,float>::iterator it;

for(it=m.begin();it!=m.end();it++)

{

cout<<(*it).first<<":"<<(*it).second<<endl;//輸出鍵值與映照數據

}

//可以刪除某個迭代器位置元素、等于某鍵值的元素、某迭代器區間的所有元素

m.erase(4);

m.clear();

//反向遍歷

map<string,float>::reverse_iterator it;

for(it=m.rbegin();it!=m.rend();it++)

{

cout<<(*it).first<<":"<<(*it).second<<endl;//反向輸出鍵值與映照數據

}

//find()返回鍵值所處迭代器位置或end()位置

//自定義比較函數(默認從小到大)

非結構體元素

struct comp

{

bool operator () (const int &a,const int &b) const

{

return a>b;//從大到小

}

}

map<int,char,comp> m;

map<int,char,comp>::iterator it;

結構體元素

struct info

{

string name;

float score;

bool operator < (const info &a) const

{

return score>a.score;//從大到小

}

}

map<info,int> m;//創建

map<info,int>::iterator it;

for(it=m.begin();it!=m.end();it++)

{

cout<<(*it).second<<":";

cout<<((*it).first).name<<" "<<((*it).first).score<<endl;

}

9.multimap:

#include <map>

#include <algorithm>

//允許重復插入相同鍵值的元素

multimap<string,float> m;

m["jack"]=98.5;//插入元素

m.insert(pair<string,float>("lvhuan",18.5));

multimap<string,float>::iterator it;

for(it=m.begin();it!=m.end();it++)

{

cout<<(*it).first<<":"<<(*it).second<<endl;//輸出鍵值與映照數據

}

//erase()可以刪除某個迭代器位置的元素,某段區間的元素,鍵值等于某個值的所有重復元素(并返回刪除元素個數),還有清空clear()

//find(),如果查到,返回該元素第一次出現的迭代器位置,否則返回end()

it=m.find("123");

10.list:

//雙向循環鏈表容器

//迭代器只能使用“++”或“--”,不能使用“+n”或“-n”。

創建:

list<int> l;

list<int> l(10);//容量10

插入,都會自動擴張:

尾部:push_back()

首部:push_front()

中間:只能插到迭代器位置處:l.insert(it,20);//元素對象為20

遍歷:

list<int>::iterator it;

for(it=l.begin();it!=l.end();it++)

{

cout<<*it<<" ";

}//前向迭代器方式

list<int>::reverse_iterator it;

for(rit=l.rbegin();rit!=l.rend();rit++)

{

cout<<*rit<<" ";

}//反向迭代器方式

刪除:remove()刪除一個元素值,值相同的元素都會被刪除。

l.remove(1);//刪除值為1的所有元素

l.pop_front();//刪除首部元素

l.pop_back();//刪除鏈表尾部元素

list<int>::iterator it;

for(it=l.begin();it!=l.end();it++)

{

cout<<*it<<" ";

}

it=l.begin();

it++;

it++;

l.erase(it);//刪除迭代器位置元素

l.clear();//清空

查找:find(),找到則返回迭代器位置,否則返回end().

eg:it=find(l.begin(),l.end(),5);//查找這個區間上的值為5的元素的位置

升序排序:

l.sort();

刪除連續重復元素,只保留一個:

l.unique();//注意是刪除連續重復,不是單單重復

11.bitset:

//bit位元素的序列容器,每個元素只占一個bit位,取值0或1.

/*

bitset類

方法列表:

b.any() b中是否存在置為1的二進制位?

b.none() b中不存在置為1的二進制位嗎?

b.count() b中置為1的二進制位的個數

b.size() b中二進制位的個數

b[pos] 訪問b中在pos處的二進制位

b.test(pos) b中在pos處的二進制位是否為1?

b.set() 把b中所有二進制位都置為1

b.set(pos) 把b中在pos處的二進制位置為1

b.reset() 把b中所有二進制位都置為0

b.reset(pos) 把pos處的二進制位置為0

b.flip() 把b中所有二進制位取反

b.flip(pos) 把pos處的二進制位取反

b.to_ulong() 用b中同樣的二進制位返回一個unsigned long值

os<<b 把b中的位集輸出到os流

*/

//創建

bitset<100000> b;//創建時必須指定容器大小,且不能再修改大小。默認初始值為0.

//元素賦值

b[6]=1;//下標法,最低位為第0位

b.set();//全部置1

b.set(6);//將指定位置1

b.reset();//全部置0

b.reset(6);//指定位置0

//輸出元素

cout<<b[i];//下標法輸出,可以借用b.size()來控制個大規模輸出

cout<<b;//注意輸出的可是二進制形式哦(01串)

java map賦值,c11容器常用方法