你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

deque容器详细介绍

[复制链接]
gaosmile 发布时间:2020-10-7 21:25

一、deque工作原理:

deque容器内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据;中控器维护的每个缓冲区的地址,使得使用deque时像一片连续的内存空间,如下图所示:

微信图片_20201007211457.png

二、deque构造函数:

1、功能描述:

deque容器构造

2、函数原型:

  • dequedeqT;//默认构造函数

  • deque(beg,end);//构造函数将[beg,end)区间中的元素拷贝给本身

  • deque(n,elem);//构造函数将n个elem拷贝给本身

  • deque(const deque &deq);//拷贝构造函数

    : M5 }( z9 s6 u( F. S: [. O

代码应用:

#include <iostream>
0 Z* E: W/ _% g3 C6 L#include <deque>& ^5 b& W( c' r/ |
using namespace std;
/ j1 k+ C4 u3 o( W# i' q. Evoid print(const deque<int>&d)
0 ^3 H- Z; \& {/ G) U# ^{- Y  D2 ^+ o& q4 ]
    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)& C$ V% f3 T6 _+ x5 T
    {
* o  C$ v& I3 j( ~0 S. \       cout<<*it<<" ";! A2 }2 ^1 K) Z  J4 f. G
    }
& x+ [9 {/ @, {2 L# b    cout<<endl;
1 R$ w9 K& m7 }, D8 r3 v3 Z}
) W3 p( j9 P3 Y( R/ V- ]/ nvoid test()
! G9 B* p# e1 J* m5 }8 G{
8 l1 Z4 u  J. x* N6 Z    deque<int>d1;
, c4 a% L' w9 X0 N- D8 T) S    for(int i =0; i<10;i++)$ w) t" v9 _( [  L$ H
    {
; y' b7 o9 g4 \+ L        d1.push_back(i);5 |% Y1 W: }5 n$ H# }. o
    }
+ e+ w2 W; ?( s    print(d1);7 d( H  f* j) G* v  I

( C# g  ]" b- O$ }    deque<int>d2(d1.begin(),d1.end());
" D; ^9 F; c, M    print(d2);
' t% T2 x/ |4 w; `
4 ^0 h5 i. v! N" g/ F2 h    deque<int>d3(10,100);. v  l0 k, c* y$ I2 R
    print(d3);
1 G6 V; n7 r7 x' n$ H# n7 Z7 [" t3 D
% }- O) g2 D; S9 R( P$ v; e    deque<int>d4(d3);
; m" i: k: C1 ^' O' R& h    print(d4);9 X7 ?/ O) y; p$ F+ X& C& Y, \9 R
' H( C& p6 a. L8 V
}
( E' _$ `) ?0 o- Kint main()3 E2 h0 Z8 w: U5 w8 X3 q
{4 x2 {+ X- k# z- R) d2 O! n& a
   test();
, G/ z  S8 f, K/ N, U}
- Z) T7 v2 X$ H- E* X0 v
' b9 s; z3 J2 z" A9 S

结果输出:

root@txp-virtual-machine:/home/txp/test2# ./a.out
8 a# N5 ?8 Q! J* R, x& c0 1 2 3 4 5 6 7 8 9
( o9 E. N$ I; S$ Z8 g7 f0 1 2 3 4 5 6 7 8 9
! m9 ]* [$ d0 C# \. M3 l: N9 {* l100 100 100 100 100 100 100 100 100 100 4 Y* l) w' I6 B
100 100 100 100 100 100 100 100 100 100 " o" k) ]5 h( q  a, H# f4 o( |. O
3 U! m8 T' x& K, ~& _% L

三、deque赋值操作:

1、功能描述:

给deque容器进行赋值

2、函数原型:

  • deque operator=(const deque &deq);//重载等号操作符

  • assign(beg,end);//将[beg,end)区间中的数据拷贝赋值给本身

  • assign(n,elem);//将n个elem拷贝赋值给本身


    ( e* z3 u) m$ N8 D. O$ I

代码应用:

#include <iostream>
) F$ C; w* D: ]1 m#include <deque>; S9 e* M$ u6 t: M
using namespace std;4 y/ a; ~, ?3 K) n
void print(const deque<int>&d)& c, k! k7 c% c9 @1 n! j6 A: B
{$ B6 N3 Z8 x; z, v% S9 y: @  _: r
    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)% n4 a8 R/ ]& t6 [& a) j
    {) M' M8 Z* }8 F) S
       cout<<*it<<" ";
1 ]  M" z9 P5 y    }
' V9 h  @: x  k+ E0 ~" I    cout<<endl;
  b2 y/ D9 T4 q  D}
7 ^1 ?. B# C+ gvoid test()
; I/ ?3 y* S; y' m{
$ Z6 Y! Z+ [+ b3 M3 O7 [! a6 b/ G    deque<int>d1;
; f. ?7 Y8 k  l1 L    for(int i =0; i<10;i++)1 ~& c" D8 ~! J9 Y! v/ T
    {
: H2 Z  ^- {: ]$ F) n        d1.push_back(i);
1 K/ L% h3 D8 i    }
8 E+ h  N; Q& `( x8 a    print(d1);
  B1 ^6 f) @% U
7 [) S7 ^4 v2 I+ ?    deque<int>d2;1 y/ a( t/ F1 j! K
    d2=d1;- e7 f5 l3 k! |- |, h
    print(d2);  W% `+ M6 ], W

6 f: i- L8 ]7 ]& u6 w9 J& z( ?    deque<int>d3;
0 `  d/ q: w& _8 I  @5 Y5 j    d3.assign(d1.begin(),d1.end());+ V$ w/ |1 t7 K2 s" y, j/ W9 K( E
    print(d3);
+ y4 K3 B  T- c2 E; @9 ^+ T# A! ?/ P9 K' |8 E& X8 y9 {# G
    deque<int>d4;
2 s) V  b8 Y. p3 o    d4.assign(10,100);
5 E/ h' b8 u$ J; `    print(d4);/ T7 R& z! h8 Y3 V$ b6 w+ F5 |. ?
}9 k5 G' V! k' A
int main()
0 V' b" W4 u, C$ Y2 |1 }5 B4 m{
1 v" H- }5 U1 h. l   test();
% \1 V( _) t! b% X! G2 K2 f}  e6 x0 A; @" z
: I3 k, Y- ~  z4 B. ?

结果输出:

root@txp-virtual-machine:/home/txp/test2# ./a.out) [3 x% T* B5 w! j2 u7 B) j
0 1 2 3 4 5 6 7 8 9 $ ^- e! }/ o8 i
0 1 2 3 4 5 6 7 8 9 ' i: Q: B' R/ {1 |1 B
0 1 2 3 4 5 6 7 8 9
6 C$ X6 b  v6 e' {4 Z; e100 100 100 100 100 100 100 100 100 100 5 f; f: T* v+ S9 I

0 Z! d; z9 M& y6 ?0 u* _4 X. y6 h

四、deque大小操作:

1、功能描述:

对deque容器的大小进行操作

2、函数原型:

  • deque.empty();//判断容器是否为空

  • deque.size();//返回容器中的元素个数

  • deque.resize(num);//重新指定容器的长度num,若容器变长,则以默认值填充新位置;如果容器变短,则末尾超出容器长度的元素被删除

  • deque.resize(num,elem);//重新指定容器的长度num,若容器变长,则以elem值填充新位置;如果容器变短,则末尾超出容器长度的元素被删除

    ( k$ g, a, ?) J& E/ D3 H  q

代码应用:

#include <iostream>- a6 K1 R6 t& R* B" U( j4 K
#include <deque>0 f+ |' c& x7 I7 h
using namespace std;# x# {) d! ^- S* P# `; Y  f
void print(const deque<int>&d)8 D* B3 X$ C; H7 N+ x$ Q
{
, c- x" S& _. Y* _9 X/ K2 K/ @    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)5 T6 i+ m# B% ]* j
    {4 P/ H( N. Y7 Q9 e3 ^
       cout<<*it<<" ";0 f8 ?* e4 O4 _# `
    }9 [4 n5 D- Z0 A4 W% C+ P( F
    cout<<endl;2 l% a& t" a  U9 a" A& K% ^
}
* b5 E1 T' D+ V5 b  Y4 Z7 @9 Wvoid test()
5 w6 L. H& w. C: {2 M{
/ {$ A# z4 M8 z1 Y5 M& u8 l8 f    deque<int>d1;" _3 o/ n" n4 i8 X
    for(int i =0; i<10;i++)
: `( J$ |; Z( p7 w; Q    {% I7 B* H* m. X( `4 B& ~+ i1 @
        d1.push_back(i);
, R* G5 s2 U* y: ]0 W: `# q1 H0 K    }
/ T7 N, H$ h$ x7 ?    print(d1);
1 L1 ~' x# P$ u* D
+ V; z7 M2 N6 G' z# M    if(d1.empty())3 ~) [7 O0 v2 g9 N! w5 @
    {
, }; U9 x$ s6 ]+ r" E2 c      cout<<"d1 is empty"<<endl;8 p; @7 {5 O7 v" n; c+ h
    }; ]# H/ L" b% z( l
    else6 q& b5 s+ C2 Z+ r* n, p+ t
    {
: t6 m2 y- l, e( b$ o      cout<<"d1 is not empty"<<endl;8 H1 g2 m& g3 Y. J
      cout<<"d1 is : "<<d1.size()<<endl;. P8 }1 E% h2 Q% l) E8 l
    }$ H3 P6 v+ [' m1 d" \

( a3 D1 P$ c. n. _    d1.resize(15,1);
; e* n6 t) \  c( b5 f    print(d1);6 m% N9 h, w/ p; A& f& B: C7 c: F! j
# ^5 C! F# L. e& }
    d1.resize(5);7 T; |- S; M0 D: J8 [
    print(d1);1 P; {, r, |3 W/ G
}
7 E4 ^& L  r: A& d& n/ d) r. f" \int main()
, `4 q2 S1 ~/ a{' m; D  H& y' C0 x1 Y4 x- c% F
   test();$ a  S5 |# K% t; ?# e6 |
}& J3 R2 d! q- c  W  z
% i* d. f5 d* v
1 ^* S5 e$ }/ X

结果输出:

root@txp-virtual-machine:/home/txp/test2# ./a.out
5 S$ n3 Q! d- M! h: L0 1 2 3 4 5 6 7 8 9 5 a" C( r9 {3 a; p. [4 T# Q
d1 is not empty$ _! X. U: D; N) J: J4 p/ L3 f' H
d1 is : 10% g6 `$ M4 F" Y, v$ v( N1 a8 `4 e6 x
0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 " o8 V2 \) f; g' T7 e( J1 v* A
0 1 2 3 4
1 k" Z1 K; J: X: M) U  M
- ?( ]3 o6 V* u: p: Y' I

注:deque没有容量的概念!

五、deque插入和删除:

1、功能描述:向deque容器中插入和删除数据

2、函数原型:

(1)两端插入操作:push_back(elem);//在容器尾部添加一个数据

  • push_front(elem);//在容器头部插入一个数据
    " z+ |" n+ q5 ~8 K/ G: J5 C
    / K' y1 [$ o$ L- {" ~3 i9 H- A
  • pop_back();//删除容器最后一个元素数据

  • pop_front();//删除容器第一数据


      w; y7 p! q: q3 P8 W2 T

(2)指定位置操作:

  • insert(pos,elem);//在pos位置插入一个elem元素的拷贝,返回新数据的位置

  • insert(pos,n,elem);//在pos位置插入n个elem数据,无返回值

  • insert(pos,beg,end);//在pos位置插入[beg,end)区间的数据,无返回值

  • clear();//清空容器的所有数据

  • erase(beg,end);//删除[beg,end)区间的数据,返回下一个数据的位置

  • erase(pos);//删除pos位置的数据,返回下一个数据的位置


    . W& _! ~! T/ @0 @' K, S

微信图片_20201007211503.png

两端代码应用:

#include <iostream>
. q& K' k- I% v( ~% O#include <deque>
2 p! l6 K1 W# P. Lusing namespace std;
( c3 `  S* q" `void print(const deque<int>&d)
5 p& T& O6 _; K3 L{$ f5 G/ T$ M, v9 g
    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)' S! R9 D' `7 l6 \5 a' x9 N- Z
    {' o, |) x! ]3 o
       cout<<*it<<" ";& Z- N6 v. K, d/ N: C" B1 L" e) b  K
    }2 Z1 O5 m/ L$ b8 Z6 V# Y
    cout<<endl;/ S9 i) Y* |* D0 {) O# g
}
8 c& |$ O2 h+ @; v# w8 _void test(); A  h# J* I. `; h: y# R( {  v/ ~( k
{4 L4 {6 k" j* _4 s
    deque<int>d1;# ?! g+ _' z) ?+ U3 E
   /* for(int i =0; i<10;i++)* d! L5 Y. U9 V6 D* J5 |
    {
# I3 D$ y1 c3 Y. `8 J        d1.push_back(i);5 ~/ P" A$ I' Z8 l! \# y- R
    }
. ?# |- R5 ?, V  P/ Z# ]( L    print(d1);*/
7 x/ P% p3 _. C& p& @    d1.push_back(10);/ h  O# q* J8 t8 {: @: [
    d1.push_back(20);% m5 j1 v" n1 [% c  {& f% t
5 e% U# w$ I/ R7 D6 J9 F) v6 O
    d1.push_front(100);
: K$ ]' `4 b9 J& Y7 Z1 {    d1.push_front(200);" n. I' P+ o5 O, ^, y9 G! ]. [

8 e$ U- d: F$ S  b    print(d1);& w, L5 e7 \; s/ a9 i/ ?

3 X- @. E, d+ Q% i+ I' X2 j    d1.pop_back();
" d5 ]: B; h2 j5 l5 B: q    print(d1);, Y" K$ U; i* A: v! P

$ x# X/ B% m5 R! ?    d1.pop_front();. y7 b6 p/ `1 {8 ^! [
    print(d1);
( }, }4 y( K6 X. Q
, F( m* y3 y4 H9 ?, o}2 u, J2 @$ V! \/ R* l
int main()# F: I+ K( _. d  Y  a
{
4 l) u+ g1 ?  A+ h* {" X4 u   test();. I7 f7 Z# w8 E( [
}# K* T! q5 Y- i, U. \. I0 x
0 `* C, A& W1 u; Q' g) |1 V7 n; E

结果输出:

root@txp-virtual-machine:/home/txp/test2# ./a.out
% w5 A% P9 K4 M) C200 100 10 20
5 K& q( a5 y6 v7 u& a200 100 10
" e( C0 Z7 ?1 \: i* O0 k" X100 10
, t- |' B- Q" O, V7 L( j2 A5 q  H- {! \& c

代码应用:

#include <iostream>0 W5 U! D" m# ~
#include <deque>
' z3 t  x4 l5 a  u2 Uusing namespace std;( ~+ y1 Z+ a( \( m* C' {
void print(const deque<int>&d)
$ U% @) `6 s- L  |{7 p# J9 T5 x! v+ {2 Z2 S9 ]
    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
  A* D& N* C1 \    {7 F* q) X, p8 J8 ]
       cout<<*it<<" ";
* I+ M: @: ]2 B. w* X    }
* x8 [; ?- u7 D1 J) ~6 P: B    cout<<endl;+ D' j, M: f; N* B
}
- H7 d3 Y, B$ N; ~! g2 ?void test()
5 g$ q# Z; b2 p{
0 q! [/ }  L# h* v  ]! ^    deque<int>d1;) ?5 y5 ]+ b  _0 D7 P% E4 B: F
   /* for(int i =0; i<10;i++)& K2 r; c( B) k% D# [" G, g
    {
# ^* {0 L/ i! F1 a% X/ x        d1.push_back(i);* m) D5 }5 N& d. C. ?2 R7 L3 b, u
    }6 |. h6 a9 n0 A1 F, Y6 U/ }  E
    print(d1);*/( t9 d: B" n  {) e
    d1.push_back(10);
4 D. E! j4 g1 r; d! E    d1.push_back(20);5 U/ @/ Q' ~. \
    d1.push_front(100);/ I/ k4 C* R0 e. }0 f# \9 n
    d1.push_front(200);9 k7 g$ K' V) b$ ~' D0 c6 n' d
    print(d1);: ~2 U, P  U2 k1 P  W: _
    d1.insert(d1.begin(),1000);
5 y' x! X: s8 J  f1 s- h    print(d1);6 R$ p; P+ H- A2 |+ S9 }, x
. l7 V/ B( B; o) Z4 A
    d1.insert(d1.begin(),2,10000);
- J  T$ U% U/ q8 a( V# `- D; {    print(d1);; S* P5 s8 E/ X* ]7 Q
    deque<int>d2;# b& C; l7 j1 _0 A$ m! M
    d2.push_back(1);8 I0 U7 k4 b9 m5 {$ B9 s* ?% O5 k( e
    d2.push_back(2);' Z. S, L) d: p6 e5 V) p; n% ?
    d2.push_back(3);9 x6 _5 e+ c- d% m+ c" y
" ?' W2 s/ M+ x4 t
    d1.insert(d1.begin(),d2.begin(),d2.end());; c% R) Q( F) u# `9 |' H; ^3 Y
    print(d1);
* Z) n, V+ S% A5 N- b8 x8 B' M}' h) B* j9 _0 E" a0 ?1 n

- e4 s% n( @3 |( C5 ]int main()
1 l  K( l2 q+ `! W. p9 [: ]{
$ v9 R  Z) p( ~5 |   test();
1 g& ]5 \& X& b- M* }' N}# X( e8 J- y, S

+ a& S, g$ X% }2 g4 q7 p2 g

结果输出:

root@txp-virtual-machine:/home/txp/test2# ./a.out0 Z2 m, A# h# p+ A
200 100 10 20 ! l2 n3 \- t* H# Y. N6 J) O5 _
1000 200 100 10 20   o5 h: x* r+ N6 b/ g
10000 10000 1000 200 100 10 20
5 @5 a9 ^7 n/ c7 F1 2 3 10000 10000 1000 200 100 10 20
7 Y) w# S/ _# A' m  m6 q; Q9 S& l" g

代码应用:

#include <iostream>
9 J4 @5 W) M) q: q1 h/ h#include <deque>. r1 M: z5 w; Y# y: O% F/ l
using namespace std;8 Z  L/ W$ ^( z- X/ \0 ]$ `
void print(const deque<int>&d)
3 E* O- Z4 i+ ~/ }* H: i{
( C# o/ A' ?4 j8 `. j    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)/ E6 H- o; [& N( G  V
    {& m+ ^" o+ q; R5 _, k1 }% h; N
       cout<<*it<<" ";
2 n, N4 a  y1 `0 O$ Q    }
' Q8 F5 P, Y8 [  z7 g2 K    cout<<endl;+ c( R: h7 ?5 N) a  ^) n
}  O9 H: m( A  ~; l0 ~( R0 q# v5 H
void test()
$ g2 K. u! r# H: |- b% ^{1 s$ ?2 Y1 a/ k1 R% Y+ S4 X
    deque<int>d1;
+ a8 `" |* e0 f! L4 x# F9 q. n   /* for(int i =0; i<10;i++)9 U! S; B& S3 ^- L- f
    {  ]' e9 m. }7 ~9 q
        d1.push_back(i);. y1 p: [0 k5 w. y1 n6 K' q
    }6 a2 {# U2 @  ~
    print(d1);*/
  e" C6 v8 O, r+ |- G- J    d1.push_back(10);' ^, F+ |. b, G, d7 ~2 P" V! B
    d1.push_back(20);( n9 T- m2 J/ V" v
    d1.push_front(100);: q: t( t2 ]" \$ I; D% N
    d1.push_front(200);
- b$ }* F7 J- j* s" I- t    print(d1);
3 u$ N$ G% C+ q1 M1 b! l9 s$ B6 y: \: P* C& G- A
    deque<int>::iterator it = d1.begin();//d1.erase(d1.begin())
: m8 h" `4 ^" D" f$ A* Q    it++;* e/ K' @8 E: u* U6 h7 c, p6 S
    d1.erase(it);6 M6 d% q# T$ u9 p- j
    print(d1);
1 w! ^: P! I' I& M6 J! N2 v0 P8 G, R+ p
    d1.erase(d1.begin(),d1.end());
" S, q, T6 r% `( d! Y    print(d1);
- p; J1 U2 W/ D( l
3 P) s& @1 _# a* w    d1.clear();8 U, H5 l+ _0 k
    print(d1);! X( Z! i$ f3 [- y
}8 O1 Q) f2 S0 t& p( c

6 g1 \# K# f% [/ O; d! N0 Xint main()
( ?  t$ }7 J7 X/ Z) h, }0 S{( _  j5 t, M- L6 Y0 u% G
   test();& K: t0 s! K9 D
}
; u+ Z/ m( z/ L& i; A8 C# o+ E4 U, G
7 g0 W% }% o& J+ q+ R8 X4 a

结果输出:

root@txp-virtual-machine:/home/txp/test2# ./a.out2 y! B. T; w" b/ ~* A) b
200 100 10 20 ) P0 w9 l, V* B9 l
200 10 20 3 ~. e& K0 @0 }" t/ A

+ c/ l- e4 p1 k. C' p/ @. o" E3 d/ [$ Q( S6 b2 C& e  ]
4 |6 E% _8 ]! V/ `! f

六、deque数据存取:

1、功能描述:

对deque容器中的数据存取操作

2、函数原型:

  • at(int idx);//返回索引idx所指的数据

  • operator[];//返回索引idx所指的数据

  • front();//返回容器中第一个元素

  • back();//返回容器中最后数据元素


    & ^( h1 t. D' o7 ~' @/ W: s

代码应用:

#include <iostream>
  D& q# H1 l2 k  ^- y3 V- s' d3 y8 F#include <deque>
9 y3 q! D: p; F2 {using namespace std;
/ m& \+ L+ a) f3 @void print(const deque<int>&d). T! @- ]' j8 ~/ e
{1 w1 o0 Q) x4 Y' y3 I
    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)* {" {4 ?- t. l6 `; u/ Q
    {
- i- Z1 ^: P/ r3 S- u       cout<<*it<<" ";
7 r" v5 H9 v% d2 i, ^    }
  t1 Z/ o% i& j7 P8 A: ~    cout<<endl;
2 F0 h' }2 f$ i$ \7 o}2 N0 Q5 [6 [% V
void test()- T* }( j1 i3 r! I
{
: w( p0 B+ F  P3 [+ R    deque<int>d1;- b$ F4 a( H; d8 a6 }; A" s2 O: L

! g7 x4 e! K! k, R" b& t" C% {+ z7 a    d1.push_back(10);+ j3 n" S! j* q) h* H6 E4 n$ w7 Q
    d1.push_back(20);9 Z, `7 w) K) o! r6 I: k
    d1.push_front(100);
) [* R6 W2 x. q    d1.push_front(200);
( x4 }, X- t6 m   
  j. e/ B& j; f0 `3 K    for(int i =0; i<d1.size();i++)
& J/ w" w5 n5 ^& Y/ F    {
# x( q! j& l& m* p1 a) Z$ D# f        cout<<d1<<" ";# H& `$ }2 n4 z& N; r. f' S
    }$ K2 _3 U% d! `/ u
    cout<<endl;
6 P% E# F5 g' ^- \- X$ l- e0 B
1 K  c% _, l8 S  P% c    for(int i=0;i<d1.size();i++)
( c' Y4 x0 Z! F$ X  J# g: c    {
2 ]! a. o: N* }       cout<<d1.at(i)<<" ";5 F; l1 g; v9 \+ ^- I  V7 Y/ |  N
    }) U- G3 B- P1 k+ [6 g4 V0 t
    cout<<endl;
! O5 L4 N$ h4 H% z: Z0 t- n3 @
8 n" N( [* O4 b; V8 E& z    cout<<"the first is : "<<d1.front()<<endl;
4 M, [, |6 m- U1 j, d% v+ Z2 g    cout<<"the last is : "<<d1.back()<<endl;, w" x5 X8 J$ b/ L
}
0 k1 c/ O; _7 m/ F* q4 w0 U; {' W/ }4 ^
int main()
. y0 O& s4 x, O# }  Y{
( q: F$ v, s* l" @* m   test();2 A) v2 M, f0 g7 v2 z
}
! G) T; U  M% J9 K' B% G7 ?9 t
+ c+ X' x3 x) x! Y9 T" ^' @, Q, S) r  b& y0 t0 t  l6 u2 D

结果输出:

root@txp-virtual-machine:/home/txp/test2# ./a.out
3 V# V8 `' P; x! o200 100 10 20 3 H. u- c4 H2 h: M7 {
200 100 10 20 % j7 m. M0 q( J
the first is : 200
" v; b8 J! J. ]- _0 Mthe last is : 20
  k; }2 b* _3 R$ c5 A$ R! t' W3 P

七、deque排序:

1、功能描述:

利用算法实现对deque容器进行排序

2、算法:

sort(iterator beg,iterator end);//对beg和end区间元素进行排序

代码应用:

#include <iostream>& [5 I* [& k9 H) \1 X
#include <deque>
8 F; s' D, n- J, c% }$ @3 [% N#include <algorithm>0 }/ b( i$ r9 j2 T( B
using namespace std;
( w/ |* m+ H4 F3 u1 uvoid print(const deque<int>&d)1 ^! }" |0 k. z7 V" w
{
7 n+ R* v( s; `" g5 j5 `( P$ ]3 X9 J    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)4 U! m" n; d0 g3 ~) \% G3 _' v
    {; ]! x8 D1 [5 z! Q  S2 }, R6 s
       cout<<*it<<" ";
: @$ a& h: Y' Q/ b2 B& H    }, T9 [  e. u  k
    cout<<endl;8 ]& A) @; I8 z  `/ F  y, p
}
. ~" Y$ [5 ^9 m3 m! Pvoid test()  G% A2 u$ g- W" H; C
{' p7 g( I0 W' B4 @/ g+ D# E
    deque<int>d1;
! P4 G4 R2 M6 m) l# J! O; Z: T- D. X
    d1.push_back(10);$ s; ?$ G) X  I* u: h- s; o
    d1.push_back(20);
8 X0 H+ \% C$ U& C* ^    d1.push_front(100);
$ w/ L( q8 f3 w# V9 }; U    d1.push_front(200);+ d- w$ l! g9 P( \( s9 {5 b

6 f& B! \5 y' n# r9 C    print(d1);9 `9 w1 q( v9 L! t3 p
    sort(d1.begin(),d1.end());
5 A, S& ~6 b, n3 _, s    print(d1);' M  T: P1 R% [- A) w* w$ }8 D7 Z
}
( b0 y/ o1 B5 ~! T
* r# x$ F) E9 N& l; J8 B+ iint main()
' Y1 M. f! A  S4 x6 D{9 h/ H7 Q  y2 }1 ~" \1 s7 Q0 `
   test();
) l( \9 U) w+ m: |* T}
# U; G8 h' d0 H' J$ z1 K) O" G+ L* ?! h
' C9 M; Y; Y* _$ ^  y2 q% [7 A

结果输出:

root@txp-virtual-machine:/home/txp/test2# ./a.out
/ q0 {$ z( p) S! a% }6 D; x200 100 10 20 " F( ~4 a- w+ d
10 20 100 200

; X; q; y) ?; \& U5 v, Z3 Z' X5 T
赞 收藏 评论0 发布时间:2020-10-7 21:25

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版