C++基础知识补充

友元函数
实现全局函数,类内实现

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)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。