STL 标准模板库 初步了解

【vector】动态数组

#include <vector> //在VS下实现,其他IDE可能不行

 

vector<int> arr(128);
     int capacity=arr.capacity();  //缓冲区容量128

     int size=arr.size();  //大小,即元素个数 128

 

arr[0]=12;  //初始值为0,修改为12

arr.at(1)=23;  //另一种方法修改初始值

 

vector<int > arr; 

arr.push_back(5);  //capacity=1  size=1  加入一个元素,值为5  但capacity可能不是增加一个单位

 

arr.pop_back();  //将size减1,capaity不变

 

arr.clear();  //将size变为0,capaity不变

 

内部类 迭代器 iterator

vector<int >::iterator iter;  //iter是指针,存地址值

                 for (iter = arr.begin(); iter < arr.end(); iter++)  //arr.begin()是首地址值,arr.end()是末尾地址

                {

                                cout << *iter << " ";

                }

 

另一种方法遍历

for(i=0;i<arr.size;i++)

             cout<<arr[i]<< " ";

 

插入和删除

arr.insert(arr.begin()+3,77);  //插入位置用地址表示,+3表示第4个位置

 

arr.erase(arr.begin()+3);

 

 

 

 

【list】 链表  比vector重要

#include <list>               

 

list<int> lst;

                lst.push_front(4);  //在头部插入一个元素4

                lst.push_back(3);  //在尾部插入一个元素3

                lst.pop_front();  //删除

                lst.pop_back();

                cout << lst.size()<<endl;  //取长度

 

迭代器 遍历

list<int >::iterator iter;

                 for (iter = lst.begin(); iter != lst.end(); iter++)  //用!=  不能用<

                                cout << *iter << " ";

 

 //删除值为3的结点

                 for (iter = lst.begin(); iter != lst.end(); iter++)  //用!=  不能用<

                

                                 if (*iter == 3)

                                {

                                                lst.erase(iter);

                                                 break//不加break会出错

                                }

 

lst.insert(++lst.begin(),100);  //插入

 

iter = lst.begin();

                 for (i = 0; i < 2; i++)iter++;  //iter每次只能加1

                lst.insert(iter,100);  //插入

 

 

 

 

【string】 字符串

#include <string>  //STL都不加.h

 

string str=NULL;  //程序会出错

应该string str;或者string str=""; 

 

str.c_str()  //把string转为char*

 

在尾部添加字符串

str2.append("abc",2);  //取前2个字符

str2.append( "abcde",2,2);  //从第2+1个字符开始,取2位字符

str2.append(3,'a');  //加入3个a

 

str2.clear();  //清除字符串为空

 

str2[1] = 'i';或者str2.at(1) = 'i';

 

查找

cout<<str2.find('a')<<endl;  //返回第1个a的位置(位置从0开始计数),不存在返回乱码

cout << str2.rfind( 'a') << endl;  //返回最后一个a的位置(位置从0开始计数)  从右往左查找

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WX Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值