• vector set string map 用法


    vector  动态数组

    set  集合  

    string  字符串

    map  自定义映射

    左闭右开

    vector

        vector<int> vi;
        for(int i=0;i<10;i++)
            vi.push_back(i);//放在最后
        for(vector<int>::iterator it=vi.begin();it!=vi.end();it++)
            cout<<*it<<endl;

    vi.begin 是第一个元素的地址(将迭代器理解为地址),end为最后一个元素的下一个元素地址

    push,pop是不是暗示可以直接用来当栈用?

    还有其他方法不一一举例了

       vi.pop_back();
        vi.size();
        vi.clear();//清空
        vi.insert(it,x);//想迭代器处插入元素x
        vi.erase(it);
        vi.erase(it_first,it_last);//左闭右开

     set

    默认自动去重,并按升序排序,因为用的是红黑树

    另外允许重复的set有  multiset

    不排序的set有  unordered_set  用的散列代替红黑树

        set<int> sset;
        for(int i=0;i<10;i++)
            sset.insert(i);
        for(set<int>::iterator it=sset.begin();it!=sset.end();it++)
        {
            cout<<*it<<endl;
        }

    set就不是push  pop了

    直接是insert函数

    其他函数有

        set<int>::iterator it=sset.find(value);
        sset.erase();//参数可以填值或者迭代器,区间删除同vector
        sset.size();
        sset.clear();

    string

    c++的string可以用类似char数组的方式遍历

        string sss="546456sdfa";
        for(int i=0;i<sss.length();i++)
            cout<<sss[i];

    cout  cin  都是整个输入输出

    还可以转换为char数组

    printf("%s",sss.c_str());

    string还可以用迭代器输出

        for(string::iterator it=sss.begin();it!=sss.end();it++)
            cout<<*it;

    加号可以直接拼接两个string

    str3=str1+str2;

    其他函数有

        sss.insert(pos,string);//在sss[pos]位置上插入string
        sss.insert(it,it_begin,it_end);//串 [it_begin,it_end)左闭右开插入到it位置(都是迭代器)
        sss.erase(it);
        sss.erase(pos,length);//区间抹除同vector
        sss.clear();
        sss.substr(pos,length);
        sss.find(string);
        sss.replace(pos,length,string);//sss[pos]开始,length长度的子串替换为string
        sss.replace(it_begin,it_end,string);//sss的迭代器it_begin,it_end左闭右开范围内的子串替换为string

    map

        map<char,int> mmap;
        mmap['a']=1;
        cout<<mmap['a'];

    相同键的值只能有一个

        for(map<char,int>::iterator it=mmap.begin();it!=mmap.end();it++)
            printf("%c %d ",it->first,it->second);

    first是键值,second是存放的对应值,同样,map也会排序,用的也是红黑树

    其他函数

        mmap.find(key);
        mmap.erase(it);
        mmap.erase(key);
        mmap.erase(it_begin,it_end);//左闭右开
        mmap.clear();
        mmap.size();

    如果需要一个键对应多个值,multimap,这里是不是可以用来分类,并查集?

    同set一样,也有unordered_map

  • 相关阅读:
    关于产品那些事
    关于“编程的本质”的探讨
    分享一款在线贝塞尔曲线调试器
    HTML、CSS、JS对unicode字符的不同处理
    HTTP Content-Disposition Explanation [ from MDN ]
    认证 (authentication) 和授权 (authorization) 的区别
    事件驱动引擎会取代多线程编程吗
    你所不知道的JSON
    都有哪些特殊而实用的的搜索引擎?
    巨头们的GitHub仓库整理
  • 原文地址:https://www.cnblogs.com/lxzbky/p/12541972.html
Copyright © 2020-2023  润新知