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;
    }
  • 相关阅读:
    java io系列23之 BufferedReader(字符缓冲输入流)
    java io系列22之 FileReader和FileWriter
    java io系列21之 InputStreamReader和OutputStreamWriter
    java io系列20之 PipedReader和PipedWriter
    java io系列19之 CharArrayWriter(字符数组输出流)
    java io系列18之 CharArrayReader(字符数组输入流)
    java io系列17之 System.out.println("hello world")原理
    java io系列16之 PrintStream(打印输出流)详解
    java io系列15之 DataOutputStream(数据输出流)的认知、源码和示例
    java io系列14之 DataInputStream(数据输入流)的认知、源码和示例
  • 原文地址:https://www.cnblogs.com/DengSchoo/p/12628117.html
Copyright © 2011-2022 走看看