友元函数
实现全局函数,类内实现
class Person
{
friend void printPerson (Person P){
cout<<"Something interesting"<<endl;
}
}
STL
STL的六大组件,分别是容器、迭代器、仿函数、适配器、空间配置器
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()//预留空间deque
双端数组
包含头文件
sort(d.begin(),d.end());stack
push(elem)
pop()
top()
empty()
size()queue
push(elem)
pop()
back()
front() //返回第一个元素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()
//内置函数
reverse()
sort()
该内置函数可以实现复杂类的比较和排序
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容器
两者的区别在于set不允许有重复的元素。而multiset允许有重复的元素set
所有元素在插入时会被自动排序
insert()
size()
empty()
swap()
clear()
erase(pos)
erase(elem)//删除容器中值为elem
erase(beg,end)
find(key)//看是否存在,返回迭代器,如果不存在,返回s.end()
count(key)//统计key的个数multiset
set不可以插入重复数据,而multiset可以。
s.insert(10)//如果是第二次插入,那么会返回两个值,第一个是iterator,第二个是bool值。
pair对组创建
成对出现的数据,利用对组可以返回两个数据
pair<type,type> p(value1,value2)
pair<type,type> p=make_pair(value1,value2)