STL(Standard Template Library)(一)

STL主要组件
容器(Containers)
迭代器(Iterators)
算法(Algorithms)

Containers
分类:
(1)序列式容器(可序——ordered)
其中每个元素都有固定的位置——取决于插入时机和地点
代表:vector deque list
(2)关联式容器(已序——sorted)
元素的位置取决于特定的排序准则,位置取决于元素的值
代表:set mulitset map multimap

容器的共通操作

ContType c          产生一个空的容器
ContType c1(c2)     产生一个同型的容器
ContType c(beg,end)
c.~ContType()          删除所有元素,释放内存
c.size()
c.empty()   判断容器是否为空,相当于size==0?如果是空,则c.empty()=1
c.max_size()    返回元素的最大可能数量
c1==c2
c1!=c2
c1<c2
c1>c2
c1=c2
c1.swap(c2)     交换c1与c2d的数据
swap(c1,c2)     是全局函数   
c.begin()       指向第一个元素
c.end()         指向最后一个元素的下一个位置
c.rbegin()      返回一个逆向迭代器,指向逆向遍历时的第一个元素
c.rend()        返回一个逆向迭代器,指向逆向遍历时最后一个元素的下一个
c.insert(pos,elem)
c.erase(beg,end)  移除[beg,end]区间内所有元素
c.clear()       移除所有元素,容器为空
c.get_allocator() 返回容器的内存模型

Vector
概念:将元素至于动态数组中加以管理

#include<vector>
vector<typename> coll; //声明一个vector容器
for(int i=0;i<num;i++)
{
    coll.push_back(i);//使用push_back()将元素插入到尾部
}
for(int i=0;i<coll.size();i++)
{
    cout<<coll[i]<<endl; //可以直接定位到vector的某个位置,进行遍历
}

//vector优异性能的秘诀之一,就是配置比其所容纳的元素所需更多的内存
vector<typename> coll;
coll.reserve(80);   //保留存储80个元素的内存,或者内存不够扩大之
coll.capacity()     返回重新分配空间之前能容纳的最大元素数量

//vector构造函数与析构函数
vector<Elem> c
vector<Elem> c1(c2) c1与c2同类型,将c2值拷贝到c1
vector<Elem> c(n)   大小为n
vector<Elem> c(n,elem) 大小为n,值全部是elem
vector<Elem> c(beg,end) 
c.~vector<Elem>()  

//vector赋值
c1=c2   将c2的全部元素赋值给c1
c.assign(n,elem)  复制n个elem,赋值给c
c.assign(beg,end) 
c1.swap(c2)     互换,容量也发生互换

//vector直接存取
c.at(idx)   //会做越界检查,出错返回out_of_range
c[idx]
c.front()   //返回第一个元素,不检查是否存在
c.back()    //返回最后一个元素,不检查是否存在

//vector插入与移除
c.insert(pos,elem)  返回新元素的位置
c.insert(pos,n,elem)    无返回值
c.insert(pos,beg,end)
c.push_back(elem)
c.pop_back()
c.erase(pos)    移除pos位置上的元素,返回下一个元素的位置

remove(coll.begin(),coll.end(),val)     删除coll中值为val的元素
find(coll.begin(),coll.end(),val)       找到第一个val的位置并返回

//print elements separated with space
#include<algorithm>
copy(scoll.begin(),scoll.end(),ostream_interator<string>(cout," "))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值