     C++. ,  ,  
  


     .        C++,      ,       300  ,     .       ++11.  ,        Programming Taskbook for STL,        .

  ,     02.03.02     .





.. 

     C++. ,  ,  








,   ,   -       C++.       STL (Standard Template Library),   ,          C++.   1998 .  STL    C++ ISO/IEC 14882 (C++98);               .   STL     : ,   .        ; STL    :   ,        ,    ,      .        .   ,     ,        ,      .           ,       (,    ,      ).      STL   ,         .    C++ ISO/IEC 14882:2011 (C++11)  STL     .

 STL           ++. -,      :   5   ,    , 7     ,  70 (  C++11   90) ,       ,      . -,   STL         C++ [3].  ,      C++     ,      STL ( ,           ,       ,      ).      STL       ,            C++.

  STL    ,       .    [2, 4, 6, 7],   STL,        [5, 8].       ,     ( ,          [5, 8]).             ,        .      .  ,             ,    1,      (   2),     300        ,  ,       ,       .    7 ;  ,          3.

     STL    C++11.         STL,   C++98,       (  )   ,    C++11.

 ,   ,      Programming Taskbook for STL (PT for STL),         Programming Taskbook.  PT for STL       Microsoft Visual Studio 2008, 2010, 2012, 2013, 2015, 2017  Code::Blocks,    13.    -   ,      ,    ,          ,   .       .           2,    ,  ,     ,   4.

      Programming Taskbook    Programming Taskbook for STL (    )           http://ptaskbook.com/.

              ,          .




 1.   STL





1.1. 





1.1.1.  


  STL     :



  ;

  ;

  ;

  ;

   .


      ,   ,     ,    ++,    p     (++p  p++),    


,     (


p   p->m     m  ).

    :



      


     ;

      


       ( 


p       );

     


      ,      .


     ==  !=    ,   .

       (      ).

        ++    - (   :p  p).

,        [ ],          (p[i]),       ,     (p + i  p  i).      ,     ,     (p2  p1).

 ,            .

 ,     ,    ,      ,      <iterator>:



 advance(p, n)    p  n   (n >= 0);      n < 0  ;

 distance(p1, p2)      p1  p2 ( ,   , . .   p1   p2    ;    p2    p1,      ).


       ,   ,    (first)     ,    (last)        (         ).      ,  ,       [first, last) (   ,   ).  [first, first)     .

             (, ,  );   ,      ,            .            ,         .

         ,    ,      .

      (. . 1.1.2),   (. . 1.2.9)    (. . 1.3.4).




1.1.2.   -


   istream_iterator<T> ostream_iterator<T> ( )     <iterator>.

        istream_iterator:   - stream       ,     ,    ( ,   ,            ).

     :



  T    ,    ;

           ,       ++;

     ++:   (++p)    (p++);

  


(   ->)    ,            ;

          ;     ,      


        (       ,    


 ,        ).


    ostream_iterator<T>    :      stream,   ,       stream    delim,  ,          (  delim  ,        ).

     :



          ;

  


 ++         ;

   p =  ( p    )      .





1.2. 





1.2.1.  


   ,      C++.         ,    ,   :   (vector),  (deque),  (list),  (set),  (multiset),  (map)   (multimap),     (string),    .       . 1.2.8:  -  (stack),  (queue)     (priority_queue),   ,    STL   C++11 (array, forward_list      -).       std.

  1  2        .



 1

 






 2

 






   ,    1  2,       -   (. . 1.2.21.2.6)     Alloc,     .      ,   : [ ].  ,          Compare,     less<Key>.

       T,      (,   C++98 ,    T       ).

                .     (  )     ,      (- push_back  pop_back),     ,    ,      (- push_back  pop_back, push_front  pop_front).    ,    ,   ; ,    ,  ,      (- capacity)    (- reserve).   string  ,      .           ,            (. .     ).         ,        (    ,      ).      ,            ,     ,                ,   ( )  /    (   . 1.2.7).  ,      -,             (. . 1.2.5).

          .    ,          ( T),         pair<Key, T>,      (key),     (value).      <    Key,            ,       Key      .   ,      ,        (  ,        ,  ).         (. . 1.2.6).          .   ,         ,      -.          ,          -.                .

 ,    1  2,    -,     : . 1.2.2  ,   ,    ,  . 1.2.3  -,    ,  . 1.2.4  -  ,  . 1.2.5   - ,  . 1.2.6  -  .     -      .   -       ,    ;  ,    -,    C++11 (,  vector(C++11), string ,   -     vector  string,    vector      C++11).      -    ++11,     C++98.

 string    -,   ,         ,        .

     ,  ,    ();      ,  ,    ().

   -         (       . . 1.2.2):



 n   size_type;

 k   key_type;

 x (  x1, x2, )   value_type;

 init_list     initializer_list<value_type> (    ,      );

 pos, hintpos, first  last (  pos_lst, first_lst, last_lst)      (iterator).


 other  ,     ,   ,    -.  InIterFirst  InIterLast   ,         (          ,    -).

- begin, end, rbegin, rend, front, back, at, equal_range, find, lower_bound, upper_bound (  data    operator[ ]   )    :    (, iterator begin()  const_iterator begin() const);          .   C++11   - begin, end, rbegin, rend     cbegin, cend, crbegin, crend .




1.2.2. ,   .  


       ::,  vector<int>::iterator.








 ,    .








     .








     .








,     .








   (T   , Key  (), pair<const Key, T>  ()).








 Key (-  (),   ()).








  T  ().








  ,      key_type.








  ,      value_type    key_type.

      .         ;         .      ,    C++11    .








  .         comp (     Compare(),   ).








 ,   ( value_type)   [InIterFirst, InIterLast).         comp (     Compare(),   ).         ,    ,     .








   other (  other      ).   ++11      other,     other,   other    r- (r-value reference;        &&)








  ,  n   x.   string    .   ++11       ,       T.








,    (initializer list).      =. ,     1, 2, 4        :









1.2.3. -  







           other (  other      ).   .   ++11    =,     other,   other    r- (r-value reference),       init_list (.      . 1.2.2).








 ,     .








   .








 true,   ,  false   .








 ,       .








    .








  ,     .








  ,       .








   .








       other   .




1.2.4. -  







          (n   x     [InIterFirst, InIterLast)).   C++11     init_list   .    ,    =.








      n (0 <= n < size()).     .   string   n == size()     0.








      n (0 <= n < size()).        out_of_range.








     .      .








   .








    ,      .           .








   pos   ,           arg1, arg2,  .       ,    - insert.  ,    .








     ,           arg1, arg2,  .       ,    - push_back.








     ,           arg1, arg2,  .       ,    - push_front.








    pos      [first, last)   ,   ,      (  end(),      ).








     .      .













    ,    pos (   n  x,    [InIterFirst, InIterLast)      init_list).   -  ,    .   ,    ++11   ,  ,     ,    pos,       .








  .      .








  .      .








 x   .








 x   .








     n.








  ,    n.  n > size(),         x.  n < size(),       .   ++11       ,       T.








   ,     ,   ,     .




1.2.5.  -  list


  -  list,  splice,      ,         .








       lst    (     ).        <   comp,     (            ).   , . .        .        ,     lst,    lst   ,     .     lst  .   ++11     lst,    r- (r-value reference).








  , ,    x   ,    pred   true.








     .








  ,   <   comp,    .   , . .         .








    lst    ( ,    pos). , ,    lst,   lst,    pos_lst,    lst   [first_lst, last_lst) (      lst,   pos      [first_lst, last_lst)).   ++11     lst,    r- (r-value reference).








    ,      .      ==   pred,    .




1.2.6. -  







   ,    k.   k   ,        k     T(),   [ ]     .      : insert(make_pair(k, T())).first->second.   ++11     k,    r- (r-value reference).








   ,    k.   k   ,    out_of_range.








     k.       0,  1;          1.








    ,           arg1, arg2,  .       ,    - insert.         ,         .  ,    ,   (     )  , ,    .      - ,    (  )       ,         .








    ,           arg1, arg2,  .       ,    - insert.  hintpos     :  x      hintpos.  ,     (        ,                  ).








    lower_bound  upper_bound    : make_pair(lower_bound(k), upper_bound(k)).








  ()   k,    pos      [first, last).        (      0,  1).   ,    ++11    ,  ,   ,      (  end(),      ).








  k   ,     ,  end(),    .               k.




  .


   .

   ,     (https://www.litres.ru/mihail-abramyan/vvedenie-v-standartnuu-biblioteku-shablonov-c-opisanie-pri/)  .

      Visa, MasterCard, Maestro,    ,   ,     ,  PayPal, WebMoney, ., QIWI ,       .


