zoukankan      html  css  js  c++  java
  • Modern Cpp记录

    #include <iostream>
    # include <set>
    #include <chrono>
    #ifndef   UNUSED
    #define   UNUSED(v)   (void)(v)
    #endif
    typedef std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> time_point;
    //void logg(const time_point& tp, std::string& name)
    void logg(const time_point& tp, const std::string& name)
    {
        UNUSED(tp);
        UNUSED(name);
        std::cout << " name: " << name << std::endl;
    }
    void log_add(const std::string& name, std::multiset<std::string>& names)
    {
        auto now = std::chrono::system_clock::now();
        std::string temp("abc");
        logg(now, std::string("xxx"));
        logg(now, "xxx");
        logg(now, temp);
        names.emplace(name);
    }
    template <typename T>
    void log_add_T(T&& name, std::multiset<std::string>& names)
    {
        auto now = std::chrono::system_clock::now();
        logg(now, "xxx");
        names.emplace(std::forward<T>(name));
    }
    int main(int argc, char *argv[])
    {
        std::multiset<std::string> nameset;
        log_add("abcd", nameset);
        log_add_T("aaa", nameset);
        return 0;
    }
    

      

    
    
    1. 如果采用logg函数的形式为 void logg(const time_point& tp, std::string& name), 则
        logg(now, std::string("xxx"));
        logg(now, "xxx");
      都会编译失败。
    
    
    2. log_add_T函数采用万能引用参数,利用完美转发,效率比log_add高!
  • 相关阅读:
    2019 SDN第六次作业
    第07组 Beta冲刺(2/4)
    第07组 Beta冲刺(1/4)
    2019 SDN第5次作业
    SDN课程阅读作业(2)
    第08组 Beta版本演示
    第08组 Beta冲刺(4/4)
    第08组 Beta冲刺(3/4)
    第08组 Beta冲刺(2/4)
    第08组 Beta冲刺(1/4)
  • 原文地址:https://www.cnblogs.com/kex1n/p/11839232.html
Copyright © 2011-2022 走看看