C++之STL基本操作

vector

  1. vector v
  2. reverse(v.begin(), v.end()), 反转容器的内容;
  3. v.push_back() v.pop_back(无参数) v.size();
  4. v.push_front(), 很慢其实;
  5. v.erase();
  6. v.insert(it, value);
  7. vec ::iterator it=v.begin();it!=v.end();it++ 遍历;
  8. v.resize(0);

set

  1. set s
  2. s.insert()
  3. s.find(type)
  4. s.count(type)
  5. s.remove(type)
  6. 红黑树实现,按照字典序的顺序从小到大排序

unordered_set

  1. unordered_set s
  2. 用法同set, 只不过hash实现,占用空间,但是插入和查找都是o(1)的时间复杂度

map

  1. map<type1, type2> m;
  2. m[type1]=type2 m.find(type1) m.count(type1) m.remove(type1);
  3. m.first() m.second();
  4. map中不存在相同元素,按照key自动进行排序;
  5. m.count(key)返回的是具有key的元素个数,如果有,则返回1,没有则返回0,注意这里每个key只能有一个或者0个;
  6. m.find(key)返回的是此值所在的位置,没有返回m.end();
  7. m.insert(make_pair(key, value));
  8. map<type1, type2>::Key_type指的是key的类型,返回的是type1;
  9. map<type1,type2>::value_type返回的是pair类型,pair->second返回的是type2类型

unordered_map

  1. unordered_map<type1, type2> um;
  2. 用法和map类似,底层hash实现key,无序,后一个相同key的值会覆盖前一个key的value;

stack

  1. stack s;
  2. s.push() s.pop() s.top();

queue

  1. queue q;
  2. q.push() q.pop() q.front();
  3. q.back(),q.pop_front(),q.push_front();

priority_queue

  1. priority_queue pq;
  2. 优先队列,本身为“越小的整数优先级越低的优先队列”
  3. 从小到大排列 队首取右边,即大的一方
  4. pq.push() pq.pop() pq.top()
  5. 从大到小排列 priority_queue<int, vector ,greater > pq;
  6. 自定义优先队列
//重载运算符
struct stu
{
    string name;
    int num;
    int age;
 
    bool operator<(const stu &p)const
    {
        return age>p.age;
    }
}S[5];
 
int main(int argc, char *argv[])
{
    S[0]={"aa",1,10};
    S[1]={"bb",2,9};
    S[2]={"cc",3,8};
    S[3]={"dd",4,7};
    S[4]={"ee",5,6};
 
    priority_queue<stu>q;
 
    for(int i=0;i<5;i++)q.push(S[i]);
 
    while(!q.empty())
    {
        cout<<q.top().name<<" ";
        q.pop();
    }
 
    return 0;
}
//自定义仿函数
struct stu
{
    string name;
    int num;
    int age;
}S[5];
 
struct cmp
{
    operator ()(const stu &q,const stu &p)
    {
        return q.num<p.num;
    }
};
 
int main(int argc, char *argv[])
{
    S[0]={"aa",1,10};
    S[1]={"bb",2,9};
    S[2]={"cc",3,8};
    S[3]={"dd",4,7};
    S[4]={"ee",5,6};
 
    priority_queue<stu,vector<stu>,cmp >q;
 
    //priority_queue<stu>q;
 
    for(int i=0;i<5;i++)q.push(S[i]);
 
    while(!q.empty())
    {
        cout<<q.top().name<<" ";
        q.pop();
    }
 
    return 0;
}

string

  1. string a
  2. string b
  3. int pos=a.find(b, startPos);//为从a中的startPos位置上找是否和b有相同的串,有的话返回开始的下标pos,即子串寻找。
  4. a.erase(startPos, size) //即去除a中从startPos开始的长度为size的串

猜你喜欢

转载自www.cnblogs.com/wangzi199/p/13382500.html