之前编码一直用的是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++区别相关推荐

  1. STL vector list deque区别与实现

    1 vector 向量 相当于一个数组     在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacitu ...

  2. python内置函数:iter、enumerate和next

    文章目录 iter.enumerate iter enumerate iter.next iter.enumerate 共同点:都可以可以用来访问可迭代对象 区别:前者访问迭代对象时只返回元素,后者除 ...

  3. C++11for(auto iter : container)auto简介

    c++11重新定义了新的特性auto,使它能够支持模板,容器,让它成为迭代器. 并且推出了新的写法: std::string test="hellowor";for(auto &a ...

  4. 详解Python内置函数iter()用法

    iter()函数用来返回指定对象的迭代器,有两种用法:iter(iterable)和iter(callable, sentinel),前者要求参数必须为序列或者有自己的迭代器,后者会持续调用参数cal ...

  5. pythoniter 2_python [iter(list)] * 2是什么意思?

    小编典典 解释起来很棘手.我会试一试: 与[iter(lst)]您创建一个包含一个项目的列表.该项目是列表上的迭代器. 每当python尝试从此迭代器获取元素时,lst都会返回的下一个元素,直到没有更 ...

  6. expected `;' before ‘iter’

    gcc版本: root@sunshine-laptop:~/workspace/c++# gcc --version gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3 代码如下: t ...

  7. Python 中的迭代器(iter、next)与生成器(yield)解析

    Python 中的迭代器(Iterator)是一个可以记住遍历位置的对象,用于迭代列表.元组.字典.集合和字符串等可迭代(Iterable)对象,迭代器从集合的第一个元素开始访问,直到所有的元素被访问 ...

  8. Rust中的iter(), into_iter(), iter_mut()

    在Rust中,iter(), into_iter(), iter_mut()都是用于在集合类型上创建迭代器的方法.这三个方法各有不同,下面一一进行介绍. iter(): iter() 方法创建一个不可 ...

  9. stl clocklist 查找元素_C++|通俗理解STL

    "存储程序"是电子计算机技术一个很重要的概念.程序能在计算机上运行,必须先让程序代码从其他的一些存储介质(如光盘或硬盘)读入到内存,然后才能由控制器从内存读取.解释并产生控制信号, ...

  10. C++ STL快速入门

    在数月之前的机试中第一次体验到STL的威力,因为自己本来一直在用C语言做开发,很多数据结构都是自己造的,比如链表.队列等,第一次接触C++ STL后发现这些数据结构都已经给我提供好了,我直接拿去调用就 ...

最新文章

  1. Linux重定向指令
  2. 分享实录|争议不断地EOS,我们如何才能理性看待?
  3. Ubuntu中安装Eclipse的SVN插件——subclipse
  4. GNOME下也是Alt+F2,输入gnome-terminal
  5. Linux如何确认连接域名,linux 查看服务器域名
  6. 剑指offer_两个链表的第一个公共结点
  7. 配置Keepalived双实例高可用Nginx
  8. 计算机软件国民经济行业代码,国民经济行业类别及代码.DOC
  9. 软件测试初学者学习资料汇总大全(校招、工作进阶通用)
  10. 门禁系统使用计算机的技术,门禁系统的指纹识别功能所运用的计算机技术是( )...
  11. java 微信 图灵机器人_使用图灵api创建微信聊天机器人
  12. 陕西计算机在职研究生院校排名,陕西在职研究生哪个学校好上
  13. cocos creator制作微信抖音小游戏《黄金矿工》
  14. 捣鼓车间 | 学生获奖作品:戒烟帽
  15. jodd发送http请求(util)
  16. python描述性统计离散型变量_数据的描述性统计(Python3 实现)
  17. 让前端的子弹飞-TypeScript
  18. JAVA怎么批量更新mysql_java 批量添加、批量更新 操作数据库
  19. javascript 标记_如何使用JavaScript更改Google Maps标记的颜色
  20. 字节跳动数仓面试 三道题-JAVA编程+hive窗口

热门文章

  1. Texstudio + sumatraPDF 正反向搜索关联设置
  2. Terminal Emulator for Android(安卓终端模拟器)的使用
  3. 桌面运维常见问题解决办法③
  4. 编译原理:flex与bison--从0到1完成一个编译器(sample语言)①
  5. RxJava3.x入门(七)——背压策略
  6. h5微信f分享链接给对方获取对方手机号_「技巧 分享」微信辅助验证次数及微信被封号后如何解封...
  7. slideDown和slideUp初始状态设置,使用animate替代
  8. 可靠数据传输(RDT)的原理
  9. 世硕电子厂的故事!!测!
  10. 重磅!2019上海落户政策大全!