• c++常用摘抄(一)


    1.标准初始化函数

       std::fill(首地址,尾地址,value)      || 用于在首尾地址之间填充value值,对应matlab的ones(1:n)函数

    1 template <class ForwardIterator, class T>
    2   void fill (ForwardIterator first, ForwardIterator last, const T& val)
    3 {
    4   while (first != last) {
    5     *first = val;
    6     ++first;
    7   }
    8 }
     1 // fill algorithm example
     2 #include <iostream>     // std::cout
     3 #include <algorithm>    // std::fill
     4 #include <vector>       // std::vector
     5 
     6 int main () {
     7   std::vector<int> myvector (8);                       // myvector: 0 0 0 0 0 0 0 0
     8 
     9   std::fill (myvector.begin(),myvector.begin()+4,5);   // myvector: 5 5 5 5 0 0 0 0
    10   std::fill (myvector.begin()+3,myvector.end()-2,8);   // myvector: 5 5 5 8 8 8 0 0
    11 
    12   std::cout << "myvector contains:";
    13   for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    14     std::cout << ' ' << *it;
    15   std::cout << '
    ';
    16 
    17   return 0;
    18 }
    myvector contains: 5 5 5 8 8 8 0 0

    2.交换函数

      std::swap(value1,value2)

    
    
    1 template <class T> void swap ( T& a, T& b )
    2 {
    3   T c(a); a=b; b=c;
    4 }
     1 // swap algorithm example (C++11)
     2 #include <iostream>     // std::cout
     3 #include <utility>      // std::swap
     4 
     5 int main () {
     6 
     7   int x=10, y=20;                  // x:10 y:20
     8   std::swap(x,y);                  // x:20 y:10
     9 
    10   int foo[4];                      // foo: ?  ?  ?  ?
    11   int bar[] = {10,20,30,40};       // foo: ?  ?  ?  ?    bar: 10 20 30 40
    12   std::swap(foo,bar);              // foo: 10 20 30 40   bar: ?  ?  ?  ?
    13 
    14   std::cout << "foo contains:";
    15   for (int i: foo) std::cout << ' ' << i;
    16   std::cout << '
    ';
    17 
    18   return 0;
    19 }
    foo contains: 10 20 30 40

     3.在list 双端链表中的迭代器函数

            std::advance(iterator pos,distance n)    注意:n可以取正或负整数值

     1 // advance example
     2 #include <iostream>     // std::cout
     3 #include <iterator>     // std::advance
     4 #include <list>         // std::list
     5 
     6 int main () {
     7   std::list<int> mylist;
     8   for (int i=0; i<10; i++) mylist.push_back (i*10);
     9 
    10   std::list<int>::iterator it = mylist.begin();
    11 
    12   std::advance (it,5);
    13 
    14   std::cout << "The sixth element in mylist is: " << *it << '
    ';
    15     
    16   std::advance (it,-4);
    17 
    18   std::cout << "now let it back_forward: " << *it << '
    ';
    19   system("PAUSE");
    20   return 1;
    21 }
    22     

     4.std::list::rease和std::list::remove的区别

    erase:

    
    

    Removes from the list container either a single element (position) or a range of elements ([first,last)).

    format:
    1 iterator erase (iterator position);
    2 iterator erase (iterator first, iterator last);//注意:删除的是[first,last)前开后闭区间
     1 // erasing from list
     2 #include <iostream>
     3 #include <list>
     4 
     5 int main ()
     6 {
     7   std::list<int> mylist;
     8   std::list<int>::iterator it1,it2;
     9 
    10   // set some values:
    11   for (int i=1; i<10; ++i) mylist.push_back(i*10);
    12 
    13                               // 10 20 30 40 50 60 70 80 90
    14   it1 = it2 = mylist.begin(); // ^^
    15   advance (it2,6);            // ^                 ^
    16   ++it1;                      //    ^              ^
    17 
    18   it1 = mylist.erase (it1);   // 10 30 40 50 60 70 80 90
    19                               //    ^           ^
    20 
    21   it2 = mylist.erase (it2);   // 10 30 40 50 60 80 90
    22                               //    ^           ^
    23 
    24   ++it1;                      //       ^        ^
    25   --it2;                      //       ^     ^
    26 
    27   mylist.erase (it1,it2);     // 10 30 60 80 90
    28                               //        ^
    29 
    30   std::cout << "mylist contains:";
    31   for (it1=mylist.begin(); it1!=mylist.end(); ++it1)
    32     std::cout << ' ' << *it1;
    33   std::cout << '
    ';
    34 
    35   return 0;
    36 }

     remove:

    Removes from the container all the elements that compare equal to val

    Removes from the container all the elements that compare equal to val
    format:
    1
    void remove (const value_type& val);
     1 // remove from list
     2 #include <iostream>
     3 #include <list>
     4 
     5 int main ()
     6 {
     7   int myints[]= {17,89,7,14};
     8   std::list<int> mylist (myints,myints+4);//good skill:用数组初始化list
     9 
    10   mylist.remove(89);
    11 
    12   std::cout << "mylist contains:";
    13   for (std::list<int>::iterator it=mylist.begin(); it!=mylist.end(); ++it)
    14     std::cout << ' ' << *it;
    15   std::cout << '
    ';
    16 
    17   return 0;
    18 }
    output:
    mylist contains: 17 7 14

     5.list的初始化构造方法

     1 // constructing lists
     2 #include <iostream>
     3 #include <list>
     4 
     5 int main ()
     6 {
     7   // constructors used in the same order as described above:
     8   std::list<int> first;                                // empty list of ints
     9   std::list<int> second (4,100);                       // four ints with value 100
    10   std::list<int> third (second.begin(),second.end());  // iterating through second//注意地址的前闭后开
    11   std::list<int> fourth (third);                       // a copy of third
    12 
    13   // the iterator constructor can also be used to construct from arrays:
    14   int myints[] = {16,2,77,29};
    15   std::list<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );//注意地址的前闭后开
    16 17 std::cout << "The contents of fifth are: "; 18 for (std::list<int>::iterator it = fifth.begin(); it != fifth.end(); it++) 19 std::cout << *it << ' '; 20 21 std::cout << '
    '; 22 23 return 0; 24 }
    
    
  • 相关阅读:
    【题解】【神奇校内POIN模拟赛】小凯的疑惑
    【题解】【CF670C】cinema
    11 Remove Duplicates from Sorted Array II
    10 3SumClosest
    7 Container With Most Water
    8 String to Integer (atoi)
    9 3Sum
    6 Palindrome Number
    5 Zigzag Conversion
    4 Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/jieforever/p/4667810.html
Copyright © 2020-2023  润新知