1. 程式人生 > 其它 >學C++day08函式物件

學C++day08函式物件

技術標籤:C++c++

                 set:集合,set中每個元素的值都唯一,而且系統能根據元素的值自動進行排序(升序)。應該注意的是set中元素的值不能直接被改變
                             #include <set>
                 map:存放鍵值對(一一對應關係--》對映),不保證存放的先後順序
                             比如:   張三       0001
                                          李四       0002
                             在比如:星期一     mon
                                           星期二     tues
                                            鍵            值
                            插入資料
                                       寫法一:  mymap.insert(pair<鍵,值>(鍵,值));
                                       寫法二:  map<char,int> mymap;
                                                       mymap ['a']=101;  //等價於  mymap.insert(pair<char,int>('a',101));

                 list:本質上是個連結串列
                           合併連結串列
                                         list1.merge(list2);   //把list2合併到list1裡面,並且清空list2
                           帶條件的刪除
                                        mylist.remove_if (single_digit);          
                                        mylist.remove_if (is_odd());             
                 stack:棧
                 queue:佇列
        讀寫迭代器:begin()  end()
        只讀迭代器:cbegin()  cend()
        逆迭代器:rbegin()  rend()

遇到的問題

1. 程式碼中使用auto關鍵字,編譯報錯
           g++  編譯的時候後面加上   -std=c++11
    重新下載g++
           sudo  apt-get install g++

C++新的語法

 1. C++新式迴圈
          for(auto  &引用的名字: 容器物件的名字)
          比如: for(auto &x: myvector)

函式物件(函式符)

1. 函式物件:C++允許我們將函式名字,類物件,Lambda表示式作為另外一個函式的引數來使用
                     函式名字,類物件,Lambda表示式 --》在書寫的時候,樣子跟函式呼叫非常類似,所以老外給它們去了個形象的名字--》函式符(函式物件)
     C++中函式物件總共有三種常見的表現形式
          第一種:謂詞函式
          第二種:類過載了()
          第三種:Lambda表示式
  1. 謂詞函式
    一元謂詞函式: 返回值bool型別,引數只有一個,這種函式就叫做一元謂詞函式
    二元謂詞函式: 返回值bool型別,引數有兩個,這種函式就叫做二元謂詞函式
    bool single_digit (const int& value) //一元謂詞函式
    {
    return (value<10);
    }
    比如: mylist.remove_if (single_digit);
    remove_if(single_digit);
    {
    for(int& value:mylist)
    {
    if(value<10)
    刪除對應元素
    }
    }
  2. 類過載了圓括號()
    class is_odd
    {
    bool operator() (const int& value) { return (value%2)==1; }
    };
  3. 匿名物件
    沒有名字的物件,在實際開發中一般是把匿名物件當成實參來傳遞