zoukankan      html  css  js  c++  java
  • C++常用类型STL库用法总结

    C++常用类型STL库用法总结

    1.string类总结:

    • 定义方法: #include , 除此之外还要using namespace std;
    • 使用方法:
      • string 重载了 += 、 +、!= 、==、<= 、>= 、 >、 < 操作符可以直接使用, if (s <= "aaa") return;
      • 可以string s; s[i]的方式调用单个字符
      • 输入输出:cin 和 cout配合
    • 常用函数:
      • int size()const; //返回当前字符串的大小
      • int length()const; //返回当前字符串的长度
      • bool empty()const; //当前字符串是否为空
      • void resize(int len,char c); //把字符串当前大小置为len,多去少补,多出的字符c填充不足的部分
      • string &insert(int p,const string &s); //在p位置插入字符串s
      • string &replace(int p, int n,const char *s); //删除从p开始的n个字符,然后在p处插入串s
      • string &erase(int p, int n); //删除p开始的n个字符,返回修改后的字符串
      • string substr(int pos = 0,int n = npos) const; //返回pos开始的n个字符组成的字符串
      • void swap(string &s2); //交换当前字符串与s2的值
      • string &append(const char *s); //把字符串s连接到当前字符串结尾
      • void push_back(char c) //当前字符串尾部加一个字符c
      • const char *c_str()const; //返回一个以null终止的c字符串,即c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同,用于string转const char*

    2.vector -- STL:

    • 定义方法:#include
    • 使用方法:
       - 1>. a.size()                 //获取向量中的元素个数
    
    
       - 2>. a.empty()                //判断向量是否为空
    
    
       - 3>. a.clear()                //清空向量中的元素
    
    
       - 4>. 复制
            a = b ;            //将b向量复制到a向量中
    
    
       - 5>. 比较
            保持 ==、!=、>、>=、<、<= 的惯有含义 ;
            如: a == b ;    //a向量与b向量比较, 相等则返回1
    
    
       - 6>. 插入 - insert
            ①、 a.insert(a.begin(), 1000);            //将1000插入到向量a的起始位置前
            
            ②、 a.insert(a.begin(), 3, 1000) ;        //将1000分别插入到向量元素位置的0-2处(共3个元素)
            
            ③、 vector<int> a(5, 1) ;
                vector<int> b(10) ;
                b.insert(b.begin(), a.begin(), a.end()) ;        //将a.begin(), a.end()之间的全部元素插入到b.begin()前
    
    
       - 7>. 删除 - erase
            ①、 b.erase(b.begin()) ;                     //将起始位置的元素删除
            ②、 b.erase(b.begin(), b.begin()+3) ;        //将(b.begin(), b.begin()+3)之间的元素删除
    
    
       - 8>. 交换 - swap
            b.swap(a) ;            //a向量与b向量进行交换
    

    • 创建二维向量:
      vector< vector<int> > my_vector(5, vector<int>(10, 0)); //创建一个5*10的int型二维向量 且初始值为0
      cout << my_vector[2][1];//访问数组元素
    #include<iostream>
        #include<vector>
    
        using namespace std ;
    
        int main()
        {
            vector< vector<int> > b(10, vector<int>(5, 0)) ;
    
            //对部分数据进行输入
            cin>>b[1][1] ;
            cin>>b[2][2] ;
            cin>>b[3][3];
    
            //全部输出
            int m, n ;
            for(m=0; m<b.size(); m++)           //b.size()获取行向量的大小
            {
                for(n=0; n<b[m].size(); n++)    //获取向量中具体每个向量的大小
                    cout<<b[m][n]<<" " ;
                cout<<"
    " ;
            }
    
            return 0;
        }
    

    • 常用函数:
      • c.back() // 传回最后一个数据,不检查这个数据是否存在。
      • c.begin() // 传回迭代器中的第一个数据地址。
      • c.capacity() // 返回容器中数据个数。
      • c.clear() // 移除容器中所有数据。
      • c.empty() // 判断容器是否为空。
      • c.end() // 指向迭代器中末端元素的下一个,指向一个不存在元素。
      • c.erase(pos) // 删除pos位置的数据,传回下一个数据的位置。
      • c.erase(beg,end) //删除[beg,end)区间的数据,传回下一个数据的位置。
      • c.front() // 传回第一个数据。
      • c.insert(pos,elem) // 在pos位置插入一个elem拷贝,传回新数据位置。
      • c.insert(pos,n,elem) // 在pos位置插入n个elem数据。无返回值。
      • c.insert(pos,beg,end) // 在pos位置插入在[beg,end)区间的数据。无返回值。
          
      • c.max_size() // 返回容器中最大数据的数量。
      • c.pop_back() // 删除最后一个数据。
      • c.push_back(elem) // 在尾部加入一个数据。
      • c.rbegin() // 传回一个逆向队列的第一个数据。
      • c.rend() // 传回一个逆向队列的最后一个数据的下一个位置。
      • c.resize(num) // 重新指定队列的长度。
      • c.reserve() // 保留适当的容量。
      • c.size() // 返回容器中实际数据的个数。
      • c1.swap(c2)
      • swap(c1,c2) // 将c1和c2元素互换。同上操作。

    详解vector删除操作:

    • 1:在一个数列中用find函数找到某个数,然后删去
    //(需要#include <algorithm>)
    std::vector<int>::iterator iter=std::find(a.begin(),a.end(),3);
    a.erase(iter);
    
    • 2:调用vector类提供的函数
      a.erase(a.begin()+2);

    • 3:采用遍历向量,用迭代器去删除

    vector<int>::iterator it = vec.begin();
    for(;it != vec.end();)
    {
        if(*it == 5)
            //删除指定元素,返回指向删除元素的下一个元素的位置的迭代器
            it = vec.erase(it);
        else
            //迭代器指向下一个元素位置
            ++it;
    }
  • 相关阅读:
    读书笔记之 javascript 设计模式 工厂模式
    5分钟读书笔记之 设计模式 桥接模式
    读书笔记之 javascript 设计模式 组合模式
    响应式布局
    接收浏览器传值的方式
    AutoPoco的使用
    四种传值方式
    IIS本地服务器,设置IP地址问题
    MVC的小知识点
    MVC 生成Html字符串MvcHtmlString CacheHelper用法
  • 原文地址:https://www.cnblogs.com/DengSchoo/p/12628117.html
Copyright © 2011-2022 走看看