STL初步排序与三大容器总结

幕布链接(文字可复制):https://mubu.com/doc/1gIm2WiOGM

  • 一、排序与检索
    • sort() #include<algorithm>
      • sort(a,a+n)
        对普通数组进行排序
      • sort(v.begin() , v.end())
        对存储在vector中的元素排序
    • lower_bound #include<algorithm>
      • lower_bound(&First,&end,int value)  返回大于等于value值的第一个值的大小
        传入起始位置,终止位置,查找的值,
      • 如果要返回位置,可以例如:int a[100]; int p = lower_bound(a,a+n,x) - a;
  • 二、不定长数组:vector
    • vector就像一个二维数组,只是第一维的大小是固定的(maxn),而第二维的大小不固定
      • 声明:vector<int>a[maxn]或者vector<double>a[maxn];
        • a.size()
          读取a的大小
        • a.resize()
          改变a的大小
        • a.push_back()
          在a的尾部添加一个元素
        • a.pop_back()
          删除最后一个元素
        • a.clear()
          清空元素且不回收内存
        • a.empty()
          ​判断a是否为空​
        • a.insert(&adress , value)
          在指定位置插入数据,例如intsert(v.begin,3)
        • a.insert(&adress , amount , value)
          在指定位置插入amount个value,例如insert(v.begin,5,3) 在容器的开头传入五个三
        • a.front()
          返回*a,begin()第一个元素
        • a.back()
          返回最后一个元素
  • 三、集合:set
    • set集合是c++ stl库中自带的一个容器,set中的元素都是排好序的,且set集合中没有重复的元素
    • 声明:set<string>dict;
      • begin()--返回指向第一个元素的迭代器
      • front()--返回a.begin()第一个元素
      • clear()--清除所有元素
      • count()--返回某个值元素的个数
      • insert()--在集合中插入元素
      • empty()--如果集合为空,返回true
      • end()--返回指向最后一个元素的迭代器
      • erase()--删除集合中的元素
      • find()--返回一个指向被查找到元素的迭代器
      • size()--集合中元素的数目
      • swap()--交换两个集合变量
      • lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
      • upper_bound()--返回大于某个值元素的迭代器
    • 迭代器(以set为例)
      • 声明:set<string>::iterator it = dict.begin();
      • 使用:for(set<string>::iterator it = dict.begain; it != dict.end() ; ++it) ; cout<< *it << "\n";
    • stringstream的用法
      • #include<sstream>

  • 四、映射:map
    • map有一个有趣的特征,可以用数组表示法(将键用作索引)来访问存储的值,例如,wordmap["the"]表示与键"the"相关联的值,这里是字符串"the"出现的次数,但你可以随意向其中赋值。
    • 声明:map<string,int> cnt; map<string,int>::iterator iter;
      • cnt.count("abc");
        返回的是被查找元素的个数。如果有,返回1;否则,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。
      • cnt.insert(pair<string,int>("abc",2));


        用insert函数插入​
      • cnt["asd"] = 5; cnt["qwe"] = 9;
        用"array"的方式插入
      • iter = cnt.find("asd");

      • cnt.erase(iter);

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值