STL ++iter与iter++区别
之前编码一直用的是iter++,同事说该方式效率比较低。带着疑惑看STL源码:
// vector_Myiter& operator++(){ // preincrement++*(_Mybase *)this;return (*this);}_Myiter operator++(int){ // postincrement_Myiter _Tmp = *this;++*this;return (_Tmp);}
果不其然,++iter 前向表达式返回引用,而iter++返回的却是一临时对象。
原来前向后向重载表达式的差异,只是多了一个int参数。
// Test
class Test
{
public:Test():val(0){}~Test(){}Test &operator++(){++val;printf("Pre incr val:%d\n", val);return (*this);}Test operator++(int){Test pTmp = *this; // saveval++;printf("Post incr val:%d\n", val);return pTmp;}private:int val;
};// main
int main()
{Test test;test++;++test;return 0;
}
输出:
Post incr val:1
Pre incr val:2
STL ++iter与iter++区别相关推荐
- STL vector list deque区别与实现
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacitu ...
- python内置函数:iter、enumerate和next
文章目录 iter.enumerate iter enumerate iter.next iter.enumerate 共同点:都可以可以用来访问可迭代对象 区别:前者访问迭代对象时只返回元素,后者除 ...
- C++11for(auto iter : container)auto简介
c++11重新定义了新的特性auto,使它能够支持模板,容器,让它成为迭代器. 并且推出了新的写法: std::string test="hellowor";for(auto &a ...
- 详解Python内置函数iter()用法
iter()函数用来返回指定对象的迭代器,有两种用法:iter(iterable)和iter(callable, sentinel),前者要求参数必须为序列或者有自己的迭代器,后者会持续调用参数cal ...
- pythoniter 2_python [iter(list)] * 2是什么意思?
小编典典 解释起来很棘手.我会试一试: 与[iter(lst)]您创建一个包含一个项目的列表.该项目是列表上的迭代器. 每当python尝试从此迭代器获取元素时,lst都会返回的下一个元素,直到没有更 ...
- expected `;' before ‘iter’
gcc版本: root@sunshine-laptop:~/workspace/c++# gcc --version gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 代码如下: t ...
- Python 中的迭代器(iter、next)与生成器(yield)解析
Python 中的迭代器(Iterator)是一个可以记住遍历位置的对象,用于迭代列表.元组.字典.集合和字符串等可迭代(Iterable)对象,迭代器从集合的第一个元素开始访问,直到所有的元素被访问 ...
- Rust中的iter(), into_iter(), iter_mut()
在Rust中,iter(), into_iter(), iter_mut()都是用于在集合类型上创建迭代器的方法.这三个方法各有不同,下面一一进行介绍. iter(): iter() 方法创建一个不可 ...
- stl clocklist 查找元素_C++|通俗理解STL
"存储程序"是电子计算机技术一个很重要的概念.程序能在计算机上运行,必须先让程序代码从其他的一些存储介质(如光盘或硬盘)读入到内存,然后才能由控制器从内存读取.解释并产生控制信号, ...
- C++ STL快速入门
在数月之前的机试中第一次体验到STL的威力,因为自己本来一直在用C语言做开发,很多数据结构都是自己造的,比如链表.队列等,第一次接触C++ STL后发现这些数据结构都已经给我提供好了,我直接拿去调用就 ...
最新文章
- Linux重定向指令
- 分享实录|争议不断地EOS,我们如何才能理性看待?
- Ubuntu中安装Eclipse的SVN插件——subclipse
- GNOME下也是Alt+F2,输入gnome-terminal
- Linux如何确认连接域名,linux 查看服务器域名
- 剑指offer_两个链表的第一个公共结点
- 配置Keepalived双实例高可用Nginx
- 计算机软件国民经济行业代码,国民经济行业类别及代码.DOC
- 软件测试初学者学习资料汇总大全(校招、工作进阶通用)
- 门禁系统使用计算机的技术,门禁系统的指纹识别功能所运用的计算机技术是( )...
- java 微信 图灵机器人_使用图灵api创建微信聊天机器人
- 陕西计算机在职研究生院校排名,陕西在职研究生哪个学校好上
- cocos creator制作微信抖音小游戏《黄金矿工》
- 捣鼓车间 | 学生获奖作品:戒烟帽
- jodd发送http请求(util)
- python描述性统计离散型变量_数据的描述性统计(Python3 实现)
- 让前端的子弹飞-TypeScript
- JAVA怎么批量更新mysql_java 批量添加、批量更新 操作数据库
- javascript 标记_如何使用JavaScript更改Google Maps标记的颜色
- 字节跳动数仓面试 三道题-JAVA编程+hive窗口
热门文章
- Texstudio + sumatraPDF 正反向搜索关联设置
- Terminal Emulator for Android(安卓终端模拟器)的使用
- 桌面运维常见问题解决办法③
- 编译原理:flex与bison--从0到1完成一个编译器(sample语言)①
- RxJava3.x入门(七)——背压策略
- h5微信f分享链接给对方获取对方手机号_「技巧 分享」微信辅助验证次数及微信被封号后如何解封...
- slideDown和slideUp初始状态设置,使用animate替代
- 可靠数据传输(RDT)的原理
- 世硕电子厂的故事!!测!
- 重磅!2019上海落户政策大全!