deque支援的常見的操作

2021-08-08 19:20:55 字數 4341 閱讀 5808

#include 

#include

#include

using

namespace

std;

int main()

cout

<< endl;

second.assign(it,first.end()-1);

int mytins=;

third.assign(mytins,mytins+3);

cout

<< "size of first: "

<< int(first.size()) << endl;

cout

<< "size of second: "

<< int(second.size()) << endl;

cout

<< "size of second: "

<< int(third.size()) << endl;

//at操作:

deque

mydeque(10);

for(size_t i=0;ifor(auto print:mydeque)

cout

<< print << " ";

cout

<< endl;

//.back():用於返回當前佇列的最後乙個元素

cout

<< mydeque.back() << endl;

//.begin() .end() 是兩個迭代器

for(auto it = mydeque.begin();it!=mydeque.end();++it)

cout

<< *it << " ";

cout

<< endl;

//.cbegin() .cend() 來進行反向的迭代訪問

for(auto it=mydeque.cbegin();it!=mydeque.cend();++it)

cout

<< *it << " ";

cout

<< endl;

//.clear() 用銷毀當前佇列裡面的元素;

mydeque.clear();

mydeque.push_back(10);

mydeque.push_back(1);

mydeque.push_front(2);

for(auto it=mydeque.begin();it!=mydeque.end();++it)

cout

<< *it << " ";

cout

<< endl;

//.emplace(),通過在位置插入新元素來擴充套件容器,雙端佇列可以高效的在開頭和結尾插入或者刪除元素,如果在其他位置插入或

//者刪除元素,那麼效率就會降低;

deque

mydeque1=;

auto it1 = mydeque1.emplace(mydeque1.begin()+1,100);

mydeque1.emplace(it1,200);

mydeque1.emplace(mydeque1.end(),100);

mydeque1.emplace_back(1);

mydeque1.emplace_front(10);

cout

<< "mydeque1 contains: ";

for(auto print:mydeque1)

cout

<< print << " ";

cout

<< endl;

//.empty() 用來判斷是否為空的操作,返回值是乙個bool值

cout

<< boolalpha << mydeque1.empty() << noboolalpha << endl;

//.erase() 支援兩種操作,一種是按照位置進行刪除,另一種是按照範圍進行刪除;

deque

newdeque;

for(size_t i=0;i<20;++i)

newdeque.push_front(i);

newdeque.erase(newdeque.begin()+2);

newdeque.erase(newdeque.begin()+4,newdeque.begin()+7);

for(auto print:newdeque)

cout

<< print << " ";

cout

<< endl;

//.front()用於返回佇列的第乙個元素

mydeque1.push_front(20);

cout

<< mydeque1.front() << endl;

//.get_allocator用於返回乙個拷貝的deque關聯的allocator物件

deque

mydeque2;

int *p;

unsigned

int i=0;

p = mydeque2.get_allocator().allocate(5);

for(i=0;i<5;i++)

mydeque2.get_allocator().construct(&p[i],i);

cout

<< "the allocated contains: ";

for(i=0;i<5;i++)

cout

<< p[i] << " ";

for(i=0;i<5;i++)

mydeque2.get_allocator().destroy(&p[i]);

mydeque2.get_allocator().deallocate(p,5);

//.inerst() 在某個位置精確的插入一些元素,雖然不建議這樣做,但是是可以實現的;

//下面的幾種方式都是insert支援的過載函式:

auto it = mydeque2.begin();

mydeque2.insert(it+2,10);

mydeque2.insert(it+2,3,1);

vector

myvector(3,13);

mydeque2.insert(mydeque2.begin()+2,myvector.begin(),myvector.end());

for(auto it=mydeque2.begin();it!=mydeque2.end();++it)

cout

<< *it << " ";

cout

<< endl;

//.max_size():當前容器所能夠存放的最大值;

cout

<< mydeque2.max_size() << endl;

//operator=

deque

newfirst(3);

deque

newsecond(5);

newsecond = newfirst;

newfirst = deque

();cout

<< "size of newfirst: "

<< int(newfirst.size()) << endl;

cout

<< "size of newsecond: "

<< int(newsecond.size()) << endl;

//.同樣說可以使用來訪問下標元素的;

//.pop_back() 用於佇列的最後乙個元素

mydeque1.pop_back();

//.pop_front()用於刪除開始的第乙個元素

mydeque2.pop_front();

//.push_back()用於在最後乙個新增元素;

mydeque2.push_back(10);

//.push_front()用於在開始位置新增元素;

mydeque2.push_front(20);

//.rbegin()和rend()用來進行反向遍歷;

for(auto it=mydeque1.rbegin();it!=mydeque1.rend();++it)

cout

<< *it << " ";

cout

<< endl;

//.resize() 用於更改size的大小,三種情況和vector類似;

//.shrink_to_fit()和vector的是一樣的;

//.size()用於顯示當前佇列的大小;

mydeque2.size();

//.swap()也可以用來交換兩個相同大小的雙向佇列;

mydeque1.swap(mydeque2);

return

0;}

String的常見操作

返回值型別 命令解釋 intindexof int ch 返回指定字元在此的字串中第一次出現的索引 intlastindexof int ch 返回指定字元在此的字串中最後一次出現的索引 char charat int index 返回字串中index位置上的字元,其中index的取值範圍 0 字串...

queue 的常見操作

include include include using namespace std if 0 1.佇列是一種容器介面卡,用於在fifo上下文中進行操作,其中元素從一段插入,然後在另一端進行提取 2.佇列實現為容器介面卡,使用特定容器類的封裝物件作為其底層容器的類,提供一些特定成員來訪問其中的元素...

StringBuiler的常見操作

stringbuilder常用類庫的特性 1.增 insert offset,資料 2.刪 delete 3.改 replace setcharat getchars int srcbegin,int srcend,char dst,int dstbegin 4.查 indexof 總結 1.與st...