程序设计B之C++STL学习总结

一.STL容器简介
1.
STL是C++标准程序库的核心,是所有C++编译器和所有操作系统平台都支持的一种库。
2.1.
顺序容器的元素排列顺序与元素值无关,是由元素添加到容器里的次序决定。顺序容器包括:vector(向量)、list。
2.2
关联容器包括:map、set、multimap、multiset。
STL组件
二。初始化
3.1STL容器初始化
std::list l;
std::vectorc(l.begin(),l.end());
3.2 size operator
size() 返回当前容器的元素数量
empty()判断容器是否为空
max_size() 返回容器能容纳的最大元素数量
3.3 comparison
= =,!=,<,>,<=,>=.
如果两个容器的所有元素按顺序相等,那么这两个容器相等。
3.4 assignment 和swap
3.5与iterator相关的操作
begin() 返回一个迭代器只想第一个元素
end() 返回一个迭代器指向最后一个元素
3.6元素操作
intsert(pos,e) 将元素e安插与迭代器pos所指的位置
erase(beg,end) 移除beg,end区间内的所有元素
clear() 移除所有元素
三.容器vector
4.向量vector
vector 模拟动态数组
初始化:



#include <vector>

using std::vector;

 

vector<int> vec1;    //产生空的vector

vector<int> vec2(vec1);  //使用vec1初始化vec2

vector<int>
vec3(vec1.begin(),vec1.end());//使用vec1初始化vec2

vector<int> vec4(10);    //10个值为0的元素

vector<int> vec5(10,4);  //10个值为4的元素

vector<string> vec6(10,"null");    //10个值为null的元素

vector其他操作:

vec1.assign(n,e)//将元素n个e复制给vec1
vec1.push_back(100);            //添加元素
int size = vec1.size();         //元素个数
bool isEmpty = vec1.empty();    //判断是否为空
cout<<vec1[0]<<endl;        //取得第一个元素
vec1.insert(vec1.end(),5,3);    //从vec1.back位置插入5个值为3的元素
vec1.pop_back();              //删除最后元素
vector<int>::iterator iter = vec1.begin();    //获取迭代器的地址
vec1.clear();                 //清空元素
``

四。容器map/multimap
使用平衡二叉树管理元素,包括两部分(key,value)
内部存储结构:
![结构](https://img-blog.csdnimg.cn/20200428224315355.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NjU3MTE5,size_16,color_FFFFFF,t_70)

```cpp
#include<map>
  map<int,int> nMap;//初始化
//特殊搜寻操作
 count(key) //返回键值等于key的元素个数
  find(key) //返回键值等于key的第一个元素
  lower_bound(key)//返回键值大于等于key的第一个元素
  upper_bound(key)//返回键值大于key的第一个元素
 

五.容器set/multiset
使用平衡二叉树管理元素,集合(set)是一种包含已排序对象的关联容器。

set<string> set1;

set1.insert("the"); //直接添加



set<int> iset;//访问
for(int i = 0; i<10; i++)iset.insert(i);
iset.find(1) // 返回指向元素内容为1的指针
iset.find(11) // 返回指针iset.end()
iset.count(1) // 存在,返回1


set<int>::iterator it;//查找
it=s.find(5);    //查找键值为5的元素
if(it!=s.end())    //找到
    cout<<*it<<endl;
else            //未找到
    cout<<"未找到";


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值