zoukankan      html  css  js  c++  java
  • C++中的函数模版

    函数模版

    语法结构

    template <template_parameter_list>
    [ inline | const_expr] func_name( func_parameter_list){
       ...
    }

    template_parameter_list不能为空,多个template parameter之间用','来分隔。template parameter分为两种:type parameter和nontype parameter。

    1. type paramter
      语法形式 typename | class type_name
      其中'typename'关键字和'class'关键字是等价的。推荐使用typename,因为模版适用的类型不仅仅是class,用typename表意更准确一些。
    2. nontype parameter
      语法形式 type value_name
      type在定义模版的时候必须指定,而value_name在模版体中作为一个常量来使用。在使用模版的时候,传进来的必须是常量表达式,比如常数、const指针或引用以及函数。

    常见的函数模版示例

    template<typename T>
    int compare(const T& v1, const T& v2){
        if(less<T>()(v1, v2))
            return 1;
        if(less<T>()(v2, v1))
            return -1;
        return 0;
    }
    template<int M, int N>
    int compare(const char v1[M], const char v2[N]){
        return strcmp(v1, v2);
    }

    NOTE: 定义模版的时候,应该尽可能少一些限定,以便适用面更广。

  • 相关阅读:
    Spring Boot
    Linux入门
    synchronized(一)
    避免XSS攻击
    MySql概述及入门(五)
    MySQL概述及入门(四)
    上传漏洞总结-upload-labs
    文件类型解析漏洞防御与攻击(PHP)
    Dvna for Owasp top 10 2017
    XSS 漏洞介绍
  • 原文地址:https://www.cnblogs.com/richardustc/p/2991072.html
Copyright © 2011-2022 走看看