zoukankan      html  css  js  c++  java
  • STL

    STL

    vector

    • 动态数组

    操作:

    //定义
    vector<int> v;
    //清空
    v.clear();
    //添加到末尾
    v.push_back(a);
    //删除
    v.pop_back();
    //大小
    v.size();
    
    //遍历访问
    for(int i = 0; i < v.size(); i ++){
        int item = v[i];//使用下标即可,可以使用迭代器
    }
    
    //定义邻接表
    vector<int> adjList[N];
    

    map/unordered_map

    • 都提供hash功能,map内部自带排序,unorderd_map没有排序,在只是使用hash的功能上面,使用unordered_map性能会更好,可以进行优化减少TLE

    操作:

    //定义
    map<string, int> mp;
    map<pair<int, int>, bool> map
    //清空
    mp.clear();
    //判断是否存在
    mp.count(key);
    mp.find(key);
    
    //遍历访问
    map<string, int>::iterator it;
    for(it = mp.start(); it != mp.end(); it ++){
    	it->first;
    	it->second;
    }
    //访问,还可以直接下标访问
    mp["what"] = 1;
    

    set

    • 不允许重复元素

    操作:

    //定义
    set<int> s;
    //清空
    s.clear();
    //插入
    s.insert();
    //删除
    s.erase();
    //查找
    s.find(v);//返回迭代器
    s.count(v);//存在次数,0或1
    //大小
    s.size();
    //是否为空
    s.empty();
    
    //遍历访问
    set<int>::iterator it;
    for(it = s.begin(); it != s.end(); it ++){
        cout<<*it<<endl;//迭代器类似于指针(*s.begin()).attr
    }
    

    string

    //长度
    s.length();
    s.size();
    //切割
    s.substr(pos, length);//返回从pos下标开始的长度大于length的子串
    //切换
    char *c = s.c_str();
    s = string(c);
    //输出
    cin>>s;
    cout<<s;
    printf("%s", s.c_str());//转换为char*输出
    //自动重载了比较符号
    s1>s2//与strcmp(c1, c2)类似
    

    stack/queue/priority_queue

    操作:

    //添加
    comp.push(a);
    //删除
    comp.pop();
    //访问
    stack.top();
    queue.front();
    queue.back();
    priority_queue.top();
    //大小
    comp.size();
    //是否为空
    comp.empty();
    

    pair

    • 可以轻松的定义2维相关操作

    操作:

    //定义
    p = make_pair<int, int>;
    //访问
    p.first;
    p.second;
    //和其他操作一起使用
    vector<pair<int, int> > v;
    v.push_back({1, 2});//直接使用大括号定义
    

    重载运算符

    //结构体重载运算符
    struct Node{
        int a;
        int b;
        bool operator < (const Node &n) const{
            if(a == n.a)
            	return b < p.b;
            return a < p.a;
        }
    }
    Node nodes[3];
    sort(nodes, nodes + 3);//使用重载运算符排序
    
    //定义cmp函数
    bool cmp(Node node1, Node node2){
        if(node1.a == node2.a)
        	return node1.b < node2.b;
        return node1.a < node2.a;
    }
    sort(nodes, nodes + 3, cmp);
    
    //结构体初始化特殊方法
    Node node;
    node.a = 1;
    node.b = 2;
    //等价于
    Node node = {1, 2};//按顺序进行赋值
    //也可以按属性名称赋值
    Node node = {.a = 1, .b = 2};
    
  • 相关阅读:
    【关键字】
    【选择结构语句:switch】
    【数据类型】
    【接口】
    【抽象类和接口的区别】
    【访问权限】
    【内部类】
    【方法】
    【this 关键字】
    【Static】
  • 原文地址:https://www.cnblogs.com/faberry/p/12377735.html
Copyright © 2011-2022 走看看