博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ stl 通用算法和成员函数使用
阅读量:5278 次
发布时间:2019-06-14

本文共 1321 字,大约阅读时间需要 4 分钟。

在stl中既有通用函数,又有相同成员函数主要表现在list中。

以remove为例

list
coll; // insert elements from 6 to 1 and 1 to 6 for (int i=1; i<=6; ++i) { coll.push_front(i); coll.push_back(i); } // print all elements of the collection cout << "pre: "; copy (coll.cbegin(), coll.cend(), // source ostream_iterator
(cout," ")); // destination cout << endl; // remove all elements with value 3 remove (coll.begin(), coll.end(), // range 3);
开始是list中的元素为6 5 4 3 2 1 1 2 3 4 5 6

remove之后变成6 5 4 2 1 2 4 5 6 5 6

remove算法具有linear complexity是将容器中的等于value的值得元素使用后续的元素进行替换,这就需要进行deference。因此只是调整元素的位置,而不是真正的删除。

函数返回的是A forward iterator addressing the new end position of the modified range, one past the final element of the remnant sequence free of the specified value

然而在list中也提供了一个remove的成员函数,他是直接删除元素。它删除元素不需要移动元素,只需要进行相应的指针操作。因此具有更好的性能。

template 
void list<_Tp, _Alloc>::remove(const _Tp& __value){ iterator __first = begin(); iterator __last = end(); while (__first != __last) { iterator __next = __first; ++__next; if (*__first == __value) erase(__first); __first = __next; }}

所以在选择通用算法和成员函数时,比较具有good performance(具有constant or linear complexity)。

转载于:https://www.cnblogs.com/xuning2516/archive/2013/03/31/3018749.html

你可能感兴趣的文章
HDU 1021 一道水题
查看>>
The operation couldn’t be completed. (LaunchServicesError error 0.)
查看>>
php每天一题:strlen()与mb_strlen()的作用分别是什么
查看>>
工作中收集JSCRIPT代码之(下拉框篇)
查看>>
《转载》POI导出excel日期格式
查看>>
code异常处理
查看>>
git - 搭建最简单的git server
查看>>
会话控制
查看>>
推荐一款UI设计软件Balsamiq Mockups
查看>>
Linux crontab 命令格式与详细例子
查看>>
百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html
查看>>
游标使用
查看>>
LLBL Gen Pro 设计器使用指南
查看>>
SetCapture() & ReleaseCapture() 捕获窗口外的【松开左键事件】: WM_LBUTTONUP
查看>>
Android 设置界面的圆角选项
查看>>
百度地图api服务端根据经纬度得到地址
查看>>
CSS中隐藏内容的3种方法及属性值
查看>>
每天一个linux命令(1):ls命令
查看>>
根据xml生成相应的对象类
查看>>
查看ASP.NET : ViewState
查看>>