zoukankan      html  css  js  c++  java
  • STL——临时对象的产生与运用

    所谓临时对象,就是一种无名对象。它的出现如果不在程序员的预期之下(例如任何pass by value操作都会引发copy操作,于是形成一个临时对象),往往造成效率上的负担。但有时候刻意制造一些临时对象,却又是使程序干净清爽的技巧。刻意制造临时对象的方法是,在型别名称之后直接加一对小括号,并可指定初值,例如Shape(3,5)或int(8),其意义相当于调用相应的constructor且不指定对象名称。STL最常将此技巧应用于仿函数(functor)与算法的搭配上,例如:

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    template <typename T>
    class print
    {
    public:
        void operator()(const T& elem)
        {
            cout<<elem<<" ";
        }
    };
    
    int main()
    {
        int ia[6]={0,1,2,3,4,5};
        vector<int> iv(ia,ia+6);
    
        //print<int>()是一个临时对象,不是一个函数调用操作
        for_each(iv.begin(),iv.end(),print<int>());
    }
    

      运行结果:

    最后一行便是产生“class template具体化”print<int>的一个临时对象,这个对象将被传入for_each()之中起作用。当for_each()结束时,这个临时对象也就结束了它的生命。

  • 相关阅读:
    javascript优化--10模式(设计模式)01
    javascript优化--09模式(代码复用)02
    限制字符个数显示
    title
    点选词高亮算法
    ng-repeat嵌套的$index
    console.log的问题
    outsideClick 功能,探索
    input 框的 placeholder 另类实现
    ie9 与 placeholder 问题
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4060461.html
Copyright © 2011-2022 走看看