友元函數(shù)
實(shí)現(xiàn)全局函數(shù)腾窝,類內(nèi)實(shí)現(xiàn)
class Person
{
friend void printPerson (Person P){
cout<<"Something interesting"<<endl;
}
}
STL
STL的六大組件岂却,分別是容器、迭代器捆昏、仿函數(shù)赚楚、適配器、空間配置器
vector
vector(v.begin(),v.end());
empty();
capacity()
size()
resize(int num)
resize(int num,elem)
insert(const_iterator pos,ele)
insert(const_iterator pos,int count,ele)
erase(const_iterator pos);
erase(const_iterator start,const_iterator end);
clear();
reserve()//預(yù)留空間deque
雙端數(shù)組
包含頭文件
sort(d.begin(),d.end());stack
push(elem)
pop()
top()
empty()
size()queue
push(elem)
pop()
back()
front() //返回第一個(gè)元素list
push_back()
push_front()
pop_back()
pop_front()
swap()
size()
empty()
resize(num)
resize(num,elem)
insert(pos,elem)
insert(pos,n,elem)
clear()
erase()
remove(elem)//刪除所有與elem值相匹配的元素
front()
back()
//內(nèi)置函數(shù)
reverse()
sort()
該內(nèi)置函數(shù)可以實(shí)現(xiàn)復(fù)雜類的比較和排序
bool ComparePerson (Person &p1,Person &p2)
{
if(p1.age==p2.age)
{
return p1.height>p2.height;
}else
{
return p1.age<p2.age;
}
}
listL.sort(ComparePerson)
set/multiset容器
兩者的區(qū)別在于set不允許有重復(fù)的元素骗卜。而multiset允許有重復(fù)的元素set
所有元素在插入時(shí)會(huì)被自動(dòng)排序
insert()
size()
empty()
swap()
clear()
erase(pos)
erase(elem)//刪除容器中值為elem
erase(beg,end)
find(key)//看是否存在宠页,返回迭代器,如果不存在寇仓,返回s.end()
count(key)//統(tǒng)計(jì)key的個(gè)數(shù)multiset
set不可以插入重復(fù)數(shù)據(jù)举户,而multiset可以。
s.insert(10)//如果是第二次插入遍烦,那么會(huì)返回兩個(gè)值俭嘁,第一個(gè)是iterator,第二個(gè)是bool值服猪。
pair對(duì)組創(chuàng)建
成對(duì)出現(xiàn)的數(shù)據(jù)供填,利用對(duì)組可以返回兩個(gè)數(shù)據(jù)
pair<type,type> p(value1,value2)
pair<type,type> p=make_pair(value1,value2)