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<<"\n" ;
        }

        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;
}
posted @ 2020-04-03 18:06  DengSchoo  阅读(688)  评论(0编辑  收藏  举报