zoukankan      html  css  js  c++  java
  • C++标准模板库介绍

    vector的常见用法详解

      #include <vector>
      using namespace std;
      vector<int> a;
      vector<vector<int> > b;
    
      .[index]
      .begin()/.end()
      ::iterator
      push_back/pop_back
      size/clear/insert/erase删除一个或一个区间
    

    set的常见用法

      #include <set>
      using namespace std;
      set<int> a;
      ::iterator
      .insert/.begin/.end/.find/.erase删除一个用位置,用键值,删除区间/.size/.clear
      
      set内元素自动排序且去除重复元素
    

    string常见用法

      #include <string>
      using namespace std;
      
      string str = "abc";
      .length/.[index]/
    
      要读入和输出整个字符串,只能用cin和cout
      #include <iostream>
      #include <string>
      using namespace std;
      string str;
      cin >> str;
      cout << str;
    
      .c_str()/::iterator/operator+=/==/!=/</<=/>/>=/length()/size()/insert/erase/clear/substr/string::npos[作为find函数失败时返回值]/find/replace
    
    
      科学计数法
      0.a1a2... x 10^e
    

    map常用用法详解

      #include <map>
      using namespace std;
    

    map的定义

      map<typename1, typename2> mp;
    

    map容器内元素的访问

      通过下标访问,通过迭代器访问
      - 通过下标访问
      - 通过迭代器访问
      map<typename1, typename2>::iterator it
      it->first来访问键
      it->second来访问值
    

    map常用函数实例解析

      find/erase/size/clear
    

    map的常见用途

      一个键多个值下用multima/
    

    queue

    queue的定义

      #include <queue>
      using namespace std;
      queue<typename> name;
    

    queue内元素访问

      front/back/push/pop/empty/size
    

    priority_queue

      在有限队列中,队首元素是队列中优先级最高的那一个.
    

    priority_queue的定义

      #include <queue>
      using namespace std;
      priority_queue<typename> name;
    

    priority_queue容器内元素的访问

      top/push/pop/empty/size
    

    priority_queue内元素优先级的设置

      以下介绍基本数据类型与结构体类型的优先级设置方法
      - 基本数据类型的优先级设置
      数字大的优先级大
      构造时,可选参数2表示承载底层数据结构堆的容器
      可选参数3,是对参数1的比较类
      如希望数字小的优先级大
      priority_queue<int, vector<int>, greaterr<int> > q;
      - 结构体的优先级设置
      例子
      struct fruit
      {
            string name;
            int price;
      };
    
      // 现希望水果价格低的为优先级高
      struct fruit
      {      
            string name;
            int price;
    
            friend bool operator<(fruit f1, fruit f2)
            {
                  return f1.price > f2.price;
            }
      };
    
    
      priority_queue<fruit> q;
    
      // 另一种等价表示方法
      struct cmp
      {
            bool operator()(fruit f1, fruit f2)
            {
                  return f1.price > f2.price;
            }
      };
    
      priority_queue<fruit, vector<fruit>, cmp> q;
    
    
      待比较对象较大时,可用const &修饰比较形参
    

    stack常见用法详解

    stack的定义

      #include <stack>
      using namespace std;
      stack<typename> name;
    

    stack容器内元素的访问

      top/push/pop/empty/size
    

    pair的常见用法详解

    pair的定义

      #include <utility>
      using namespace std;
      pair<typename1, typename2> name;
    
      - 如果想在代码中临时构建一个pair,有如下两种方法
      方法1
      pair<string, int>("haha", 5)
      方法2
      make_pair("haha", 5)
    

    pair中元素的访问

      类似于
      struct pair
      {
            typename1 first;
            typename2 second;
      }
    

    pair常用函数解析

      两个pair类型数据可直接用==/!=/</<=/>/>=比较
      比较规则:
      先以first大小作为标准
      相等时,继续比较second
    

    pair常见用途

      map的insert需要pair
    

    algorithm头文件下的常用函数

      using namespace std;
    

    max/min/abs/fabs[位于math头文件]

    swap(x,y)交换x和y的值

    reverse(its, ite)

      将[its, ite)之间元素反转
    

    next_permutation()

      给出一个序列在全排列中的下一个序列
      next_permutation在已经达到全排列的最后一个时会返回false
      #include <stdio.h>
      #include <algorithm>
      using namespace std;
    
      int main()
      {
            int a[10] = {1,2,3};
            do
            {
                  printf("%d%d%d
    ", a[0], a[1], a[2]);
            }
            while(next_permutation(a, a+3));
            return 0;
      }
    

    fill

      可把数组或容器中的某一段区间赋为某个相同的值
    

    sort

    如何使用sort

      #include <algorithm>
      using namespace std;
      sort(首元素地址,尾后元素地址,可选的比较函数);
      默认对区间进行递增排序
    

    如何实现比较函数cmp

      介绍对基本数据类型,结构体类型,STL容器进行自定义排序规则时cmp的写法
      
      #include <stdio.h>
      #include <algorithm>
      using namespace std;
      // 按递减排序
      bool cmp(int a, int b)
      {      
            return a > b;
      }
    
      int main()
      {
            int a[] = {3, 1, 4, 2};
            sort(a, a+4, cmp);
      }
    

    结构体数组的排序

      #include <stdio.h>
      #include <algorithm>
      using namespace std;
    
      struct node
      {
            int x, y;
      }ssd[10];
      bool cmp(node a, node b)
      {
            return a.x > b.x;
      }
    
      int main()
      {
            ssd[0].x = 2;
            ssd[0].y = 2;
            ssd[1].x = 1;
            ssd[1].y = 3;
            ssd[2].x = 3;
            ssd[2].y = 1;
            sort(ssd, ssd+3, cmp);
    
      }
    

    容器的排序

      在STL标准容器中,只有vector/string/deque可使用sort
      #include <iostream>
      #incude <string>
      #include <algorithm>
      using namespace std;
      bool cmp(string str1, string str2)
      {
            return str1.length() < str2.length();
      }
    
      int main()
      {
            string str[] = {"bbbb", "cc", "aaa"};
            sort(str, str+3, cmp);
      }
    

    lower_bound/upper_bound

      lower_bound和upper_bound需用在一个有序数组或容器中
      lower_bound(first, last, val)来寻找在数组或容器的[first, last)范围内第一个值大于等于val的元素的位置,如是数组,返回该位置的指针.如是容器,返回该位置的迭代器.
      upper_bound(first, last, val)来寻找在数组或容器的[first, last)范围内第一个值大于val的元素的位置.如是数组,返回该位置的指针,如是容器,返回该位置的迭代器.
  • 相关阅读:
    txtexcelcvsxml存储测试数据
    webstorm 格式化代码(CTR+ALT+L)快捷键失效?
    解决jQuery触发dbclick事件同时也执行click事件
    css经典布局——头尾固定高度中间高度自适应布局
    js 如何访问跨域的iframe的元素
    获取textarea文本框所选字符光标位置索引,以及选中的文本值;textarea高度自适应,随着内容增加高度增加;获取输入框中的光标位置
    js 如何计算当年清明节日期
    验证插件使用笔记
    node 升级之后 执行gulp报错解决方案
    scss css管理相关
  • 原文地址:https://www.cnblogs.com/raindayinrain/p/13605293.html
Copyright © 2011-2022 走看看