STL C++

string

#include <string>
#include <iostream>

using namespace std;
int main(){
    string str="There are two needles in this haystack with needles.";
    //找子串
    cout<<str<<endl;
    int pos=str.find("needles");
    cout<<pos<<endl;
    cout<<str.find("needles",pos+1,6);//needles的前6个字符串与str的第pos+1开始的子串进行匹配
    //取子串
    cout<<str.substr(3,5)<<endl;//两个参数是截取子串
    cout<<str.substr(str.find("are"))<<endl;//一个参数是从pos到最后
    //字符串拼接
    string str2="tempstr";
    str.append(str2);//直接拼接
    str.append(str2,6,3);//从第6个字符开始数3个与str进行拼接
    str.append("dots are cool",5);//从开头数5个与str拼接
    //front back只能用于修改,不能用于取值
    cout<<str[0]<<endl;
    //字符插入
    str.insert(6,str2);//在str的第6个字符的位置插入str2
    str.insert(6,str2,3,4);//str2的第3个字符开始取4个,作为插入str的字符串
    str.insert(10,str2,4);//str2的第0个字符开始取8个,作为插入str的字符串
    str.insert(15,2,':'); //在str的第15个字符上插入2个冒号
    //字符删除
    str.erase (10,8);//两个参数:str的第10个字符开始删去8个字符
    str.erase(str.begin+9)//一个参数(必须是Iterator ,如begin,end形式):删去一个字符
    str.erase()//两个参数(必须是Iterator):删去这一范围的字符

    return 0;
}

vector

push_back(data)//在尾部添加一个数据
pop_back()    //弹出数组的最后一个数据(void)
at(idx)        //得到编号位置的数据
begin()        //返回指向容器第一个元素的迭代器
end()          //返回指向容器最后一个元素的迭代器
front()        //返回容器中最开始的元素
back()         //返回容器中最末尾的元素
insert(pos,elem)//在pos位置插入一个elem拷贝
max_size()     //得到vector最大可以是多大
capacity()     //当前vector分配的大小
size()         //当前使用数据的大小
resize(size)   //改变当前使用数据的大小,如果它比当前使用的大,填充默认值
reserve(size)  //改变当前vecotr所分配空间的大小
erase(pos)     //删除pos指向的数据
erase(beg,end) //删除[beg,end)区间的数据
clear()        //清空容器中的所有数据
rbegin()       //将vector反转后的开始指针返回(其实就是原来的end-1)
rend()         //将vector反转构的结束指针返回(其实就是原来的begin-1)
empty()        //判断容器是否为空
swap(vector)   //与另一个vector交换数据
//使用实例
#include <vector>
#include <iostream>
using namespace std;
int main(){
    vector<int>test;
    vector<int>::iterator it;
    for(int i=1;i<10;i++){
        test.push_back(i);
    }
    it= test.begin();
    cout<<test.size()<<endl;
    cout<<test.front()<<endl;
    test.insert(it,10);//在指针处插入值
    test.erase(test.begin(),test.begin()+2);//一个索引就删除一个值,两个就是批量删除

    for (;it != test.end(); ++it)
        cout << ' ' << *it;
    if(test.empty()==true){
        cout<<"empty";
    }
    else
        cout<<"not empty"<<endl;
    while(!test.empty()){
        cout<<"out"<<test.back();
        test.pop_back();
    }
    return 0;
}

map

begin()   返回指向map头部的迭代器
end()       返回指向map末尾的迭代器
for(auto it = map.begin(); it != map.end(); ++it)

clear()   删除所有元素

count()   返回指定元素出现的次数

empty()    如果map为空则返回true


equal_range()  返回特殊条目的迭代器对

erase()      删除一个元素

find()     查找一个元素
int found = map.find(findMe);返回索引


get_allocator() 返回map的配置器

insert()     插入元素
map.insert(std::make_pair(nums[i], i));
 
key_comp()    返回比较元素key的函数

lower_bound()  返回键值>=给定元素的第一个位置

max_size()   返回可以容纳的最大元素个数

rbegin()    返回一个指向map尾部的逆向迭代器

rend()      返回一个指向map头部的逆向迭代器

size()      返回map中元素的个数

swap()       交换两个map

upper_bound()   返回键值>给定元素的第一个位置

value_comp()   返回比较元素value的函数

set

  • set内自动从小到大排序
//实例
#include<set>
#include<iostream>
using namespace std;
int main(){
    set<int> myset;
    set<int>::iterator it;
    for(int i=0;i<10;i++){
        myset.insert(i);
    }
    //将数据转为set
    int myints[]={5,6,7};
    myset.insert(myints,myints+3);
    //判断是否存在
    if(myset.count(5)==0){
        cout<<"不存在";
    }
    else
        cout<<"存在"<<endl;
    //删除
    myset.erase(5);//按值删除
    it=myset.begin();
    it=myset.find(6);
    myset.erase(it);//按照指针的位置删除
    myset.erase(it,myset.end());//批量删除
    //遍历
    for(it=myset.begin();it!=myset.end();it++){
        cout<<*it<<endl;
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值