學C++day08函式物件
阿新 • • 發佈:2021-01-31
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表示式
- 謂詞函式
一元謂詞函式: 返回值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)
刪除對應元素
}
} - 類過載了圓括號()
class is_odd
{
bool operator() (const int& value) { return (value%2)==1; } - 匿名物件
沒有名字的物件,在實際開發中一般是把匿名物件當成實參來傳遞