STL的使用与注意事项

以前也使用过一些STL方面的东西,但是最近用得更加频繁了,所以总算抽出一点时间来小结一下。
vector 是一段连续的内存区域,它的作用和数组一样,只不过是可以自己增长长度(非常好用)。
list的游标一次只可以移动一步,因为它就是一个双向链表。
deque也是一段连续的内存区域,它通过两级数组结构来实现,一级表示实际的容器,另一级指向容器
的首和尾,因此可以高效的在首部插入和删除元素。
选择顺序容器的一些准则:
1.如果我们需要随机访问一些容器,则vector要比list好
2.如果我们已经知道存储元素的个数,则vector要比list好。
3.如果需要在中间部分插入和删除元素,则list要比vector好。

对于容器中元素的访问可以有三种方法:
1.使用游标 例如:vector<char>::iterator iter;
                 for(iter=container.begin();iter!=container.end();iter++)
                          {do_something_with_element(*iter);}
2.如果清楚地知道容器分配了多少内存空间,可以直接用[]:container[index]访问,index=0,1...
3.如果清楚地知道容器分配了多少内存空间,可以用at()方法:container.at(index),index=0,1...

set(集合):其中的元素会自动按照大小顺序排列,并且会删除重复的元素。
map(映射):经过排序了的二元组的集合,map中的每个元素都是由两个值组成,其中的key(键值,一个
map中的键值必须是唯一的)是在排序和搜索时使用,他的值可以在容器中重新读取,而另一个值是该元素
的关联的数值。

为了避免在debug时出现警告,可以使用下面的编译器命令:
#pragma warning(disable:4786)

注意:每当一个新值添加到容器中或者有一个值从容器中删除,游标的值就会失效(与句柄类似)。这一点与指针是不一样的。

要充分利用标准库中的一些算法。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值