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);

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

posted @ 2020-03-21 23:08  ecnu_lxz  阅读(206)  评论(0编辑  收藏  举报