1、容器
vector容器的初始化有一下幾個函數(shù)
std::vector v; std::vector v(n); std::vector v(n,i); std::vector v(v0); std::vector v(it1,it2);
支持的操作有
1.push_back?? 在數(shù)組的最后添加一個數(shù)據(jù)
2.pop_back??? 去掉數(shù)組的最后一個數(shù)據(jù)
3.at??????????????? 得到編號位置的數(shù)據(jù)
4.begin?????????? 得到數(shù)組頭的指針
5.end???????????? 得到數(shù)組的最后一個單元+1的指針
6.front??????? 得到數(shù)組頭的引用
7.back??????????? 得到數(shù)組的最后一個單元的引用
8.max_size???? 得到vector最大可以是多大
9.capacity?????? 當前vector分配的大小
10.size?????????? 當前使用數(shù)據(jù)的大小
11.resize???????? 改變當前使用數(shù)據(jù)的大小瞄沙,如果它比當前使用的大振亮,者填充默認值
12.reserve????? 改變當前vecotr所分配空間的大小
13.erase???????? 刪除指針指向的數(shù)據(jù)項
14.clear????????? 清空當前的vector
15.rbegin??????? 將vector反轉(zhuǎn)后的開始指針返回(其實就是原來的end-1)
16.rend????????? 將vector反轉(zhuǎn)構(gòu)的結(jié)束指針返回(其實就是原來的begin-1)
17.empty??????? 判斷vector是否為空
18.swap???????? 與另一個vector交換數(shù)據(jù)
2旨剥、標準庫算法
bind
bind是這樣一種機制簇搅,它可以預(yù)先把指定可調(diào)用實體的某些參數(shù)綁定到已有的變量峦甩,產(chǎn)生一個新的可調(diào)用實體,這種機制在回調(diào)函數(shù)的使用過程中也頗為有用栏渺。C++98中呛梆,有兩個函數(shù)bind1st和bind2nd,它們分別可以用來綁定functor的第一個和第二個參數(shù)磕诊,它們都是只可以綁定一個參數(shù)填物。各種限制纹腌,使得bind1st和bind2nd的可用性大大降低。C++11中滞磺,提供了std::bind升薯,它綁定的參數(shù)的個數(shù)不受限制,綁定的具體哪些參數(shù)也不受限制击困,由用戶指定涎劈,這個bind才是真正意義上的綁定,有了它沛励,bind1st和bind2nd就沒啥用武之地了责语,因此C++11中不推薦使用bind1st和bind2nd了,都是deprecated了目派。代碼如下
#include < functional>
intFunc(int x,int y);
auto?bf1?=?std::bind(Func,?10,?std::placeholders::_1);
bf1(20);///<?same?as?Func(10,?20)
classA
{
public:
intFunc(intx,inty);
};
A?a;
auto?bf2?=?std::bind(&A::Func,?a,?std::placeholders::_1,?std::placeholders::_2);
bf2(10,?20);///<?same?as?a.Func(10,?20)
std::function?bf3?=?std::bind(&A::Func,?a,?std::placeholders::_1,?100);
bf3(10);///<?same?as?a.Func(10,?100)
(1)bind預(yù)先綁定的參數(shù)需要傳具體的變量或值進去,對于預(yù)先綁定的參數(shù)胁赢,是pass-by-value的
(2)對于不事先綁定的參數(shù)企蹭,需要傳std::placeholders進去,從_1開始智末,依次遞增谅摄。placeholder是pass-by-reference的
(3)bind的返回值是可調(diào)用實體,可以直接賦給std::function對象
(4)對于綁定的指針系馆、引用類型的參數(shù)送漠,使用者需要保證在可調(diào)用實體調(diào)用之前,這些參數(shù)是可用的
(5)類的this可以通過對象或者指針來綁定