• stl自己的总结


    容器分为:

    序列式:vector动态数组,deque双向队列,list双向串行。

    关联式容器:set,multiset,map,multimap,hash table

    容器配接器:stack,queue,priority_queue

    stl的数据结构:biset,string,valarray

    string为basic_string的一个typedef,存储字符串

    bitset  bitset<10> 一个长度为10的二进制串  bitset<10> bs(7)  为0000000111

     1 #include <iostream>
     2 #include <bitset>
     3 #include <string>
     4 
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     bitset<10> bs1(7);
    10     bitset<10> bs2(string("1000101011"));
    11     cout<<bs1<<endl;
    12     cout<<bs2<<endl;
    13     return 0;
    14 }
    View Code

    valarray

    可以对整个数组直接进行操作

     1 #include <iostream>
     2 #include <valarray>
     3 #include <string>
     4 
     5 using namespace std;
     6 
     7 template<typename T> void printValarray(const valarray<T>& va)
     8 {
     9     for(int i=0;i<va.size();i++)
    10         cout<<va[i]<<" ";
    11     cout<<endl;
    12 }
    13 
    14 int main()
    15 {
    16     valarray<int> val(4);
    17     printValarray(val);
    18     valarray<int> val2(3,4);
    19     printValarray(val2);
    20     int ia[]={1,2,3,5,6};
    21     valarray<int> va3(ia,sizeof(ia)/sizeof(ia[0]));
    22     printValarray(va3);
    23     valarray<int> va4(ia+1,4);
    24     printValarray(va4);
    25     val=(val2+va4)*va4;
    26     printValarray(val);
    27     return 0;
    28 }
    View Code

    序列式:

    vector,list,deque不可以相互嵌套实现

    stack,queue,priority_queue可以基于以上三个高效实现。

    vector:随机访问高效,可以用下标操作

    push_back(),pop_back();insert()

    统计容器元素:size()目前大小,capacity()实际能够容纳,max_size()能够容纳最大数。

    设置容器大小:resize(),reserve();

    判断空:empty();

    清空:clear();删除:erase() ,erase(first,last)

    返回某值的引用:vector<typename T> c   c.at(index)

    c[index]直接进行值操作。

    c.front()返回第一个元素 c.back()返回最后一个元素

    迭代器相关:begin(),end(),rbegin(),rend()  

    基于迭代器的算法:find(),find_if(first,last,条件)

    元素排序:sort()

    对象交换:swap()

    list:插入删除高效

    自动扩张,插入删除不会影响指向元素的指针,引用,不会造成失效,

    不提供下标操作。

    push_front(),pop_front(),push_back(),pop_back(),erase(),clear(),insert(),remove(),remove_if()

    resize(),size(),max_size()  size_type型

    begin(),end(),rbegin(),rend(),back(),front()

    empty(),有迭代器

    list_three.assign(list_one.begin(),list_one.end())  把list3中的一部分元素换成list1

    list_two.assign(5,5.6)把list2中的五个元素换成5.6

    运算符操作:operator== >= <= != < >     list<int> l1,l2

    l1.push_back(1),l2.push_back(2)  直接if(l1>l2) 返回false;

    其他成员函数:

    merge() 把两个list合并,并按照升序排列

    sort()默认从小排大

    remove()直接把具体要删除的值删除--

    remove_if(条件,值)-------------------两者删除要删除的所有的值

    splice(iterator it,list & x)

    splice(iterator it,list& x,iterator first)

    splice(iterator it,list& x,iterator first,iterator last) 注意合并之后。x为空容器。

    unique()把连续的一样的元素删除,保留一个

    #include <algorithm>

    not_equal_to<int> Pred;

    unique(Pred)满足某种条件删除

    list:很重要;但是无操作符[]  以及成员函数at()

    deque:

    插入费力。在两端插入删除很快

    resize(),max_size(),size()

    push_back(),push_front(),pop_back(),pop_front(),insert()

    begin(),end(),rbegin(),rend()

    back(),front()

    empty()

    erase(),clear()

    assign()

    有运算符[]即对下标进行操作

    deque的模版函数:[] == < != <= >= > <

    map/multimap

    可通过operator重载排序

    size(),empty(),find(),lower_bound(),upper_bound(),equal_range(),max_size(),count()

    upper_bound()大于key的第一个元素

    lower_bound()大于或等于key的第一个元素

    equal_range()一对值大于或大于等于key的第一个元素

    ------以上三个均为返回迭代器

    map/multimap

    lower_bound()返回指向key前面的迭代器。

    upper_bound()返回大于key的迭代器。

    equal_range()返回两个第一个是lower_bound(),upper_bound().

    map比较。实值比较。

    swap(),begin(),end(),rbegin(),rend()

    swap(m1,m2) m1.swap(m2),count()

    算法函数:

    for_each(iterator begin,iterator end,proc op)对first到end调用operator 

    count(iterator begin,iterator end,const T& value)

    count(iterator begin,iterator end,UnaryPredicate op)只有op为true时才计数

    iterator max_element(iterator beg,iterator end)

    iterator max_element(iterator beg,iterator end,compFunc op)

    iterator min_element(iterator beg,iterator end)

    iterator min_element(iterator beg,iterator end,compFunc op)

    find(iterator begin,iterator end,const T& value)

    find_if(iterator begin,iterator end,UnaryPredicate op)

    i

    活在现实,做在梦里。
  • 相关阅读:
    Atcoder Regular Contest 092 A 的改编
    AtCoder Regular Contest 092 B Two Sequences
    hihoCoder #1695 公平分队II
    redis基础知识
    mongodb进阶
    mongodb基础知识
    memcached基础知识
    利用多进程获取猫眼电影top100
    分析AJAX抓取今日头条的街拍美图并把信息存入mongodb中
    selenium的使用技巧及集成到scrapy
  • 原文地址:https://www.cnblogs.com/do-it-best/p/5378541.html
Copyright © 2020-2023  润新知