STL学习

1、 为了保证安全,所有的push_back和insert插入的都是插入对象的拷贝而非元对象。
2、 使用empty()而不是使用size()==0来判断是否为空。
3、 font()、back()使用前一定判断是否为空,返回的是对象。
4、 STL提供了很多容器区间函数,用来进行区域操作,效率比自己写高很多。
5、 erase返回是删除对象的下一个迭代子,用来循环删除。iter=erase(iter),erase(iter++)
6、 reserve、resize是不必要的内存分配
7、 巧用swap来节省空间:vector<T>(vec).swap(vec)、string(s).swap(s)。
8、 map、set需要自定义比较函数.
9、 reverse_iterator,迭代时需要考虑是否需要做递减操作。
10、 排序:
     10.1:如果需要对数组(vector,string,deque)执行一次完全排序,使用sort;如果还需要稳定的顺序,用stable_sort
      10.2:如果需要对数组执行一次不完全排序,即只排序最前面的若干个,使用partial_sort。
      10.3:如果需要找一个数组的第n哥位置的元素,火灾等价性最前面的n哥元素,且不需要保证顺序,使用nth_element
      10.4:讲一个序列容器按照某个条件区分开来,使用partition、stable_partition
      10.5:如果对list进行操作,调用list::sort比sort更优
11、vec.erase(remove(vec.begin(),vec.end,m), vec.end()),list除外。Unique也要remove和erase配合。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值