模板 函数模板 思考:如果重载的函数,其解决问题的逻辑是一致的、函数体语句相同,只是处理的数据类型不同,那么写多个相同的函数体,是重复劳动,而且还可能因为代码的冗余造成不一致性。 解决:使用模板 例:求绝对值函数的模板 函数模板定义语法 语法形式: template <模板参数表> 函数定义 模板参 ...
分类:
编程语言 时间:
2020-06-04 10:47:03
阅读次数:
77
冒泡排序是一种简单的排序算法。 1 #pragma once 2 #include <iostream> 3 #include <assert.h> 4 using std::cout; 5 using std::endl; 6 template <typename T> void Swap(T & ...
分类:
编程语言 时间:
2020-05-31 19:51:05
阅读次数:
66
C++提高编程 本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层的使用 1 模板 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 模板的特点: 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的 1.2 函数模板 C++另一种编程思想称为 泛型编程 ,主要利用 ...
分类:
编程语言 时间:
2020-05-30 21:32:56
阅读次数:
56
函数模板的实例 #include <iostream> using namespace std; template<typename T> void myswap(T &a, T &b) { T t; t = a; a = b; b = t; } int main() { int x = 1; in ...
分类:
其他好文 时间:
2020-05-26 22:04:23
阅读次数:
59
当我们传入参数调用函数模板时,比如调用 max(),模板参数就被我们传进去的参数类型所决定。如果我们传进去两个 int , C++ 编译器就能推导出 T 是 int 类型的。 然而,T 有可能只是类型的一部分。比如,如果我们把 max() 定义成参数为常引用的函数: template <typena ...
分类:
其他好文 时间:
2020-05-16 19:03:15
阅读次数:
77
1.Pair 1.1 Pair定义: namespace std { template<class _T1, class _T2> struct pair { _T1 first; _T2 second; } } 两个成员都是public。 实现一个泛型类函数模板,将一个pair写入一个stream ...
分类:
编程语言 时间:
2020-05-10 23:31:30
阅读次数:
133
1.类模板的概念 1.1 函数模板的回顾 template <class T1, class T2> T1 add(T1 x, T2 y) { return x+y; } int main() { cout << add(9, ‘A’) << endl; //两种表达形式 cout << add<i ...
分类:
其他好文 时间:
2020-05-10 17:36:47
阅读次数:
77
重载解析 在C++中,对于函数重载、函数模板和函数模板重载,C++需要有一个良好的策略,去选择调用哪一个函数定义(尤其是多个参数时),这个过程称为重载解析。 (这个过程将会非常复杂,但愿不要遇到一定要写这种代码的时候。) 大致步骤 Ⅰ.创建候选函数列表(其中包含与候选函数相同名称的函数和模板函数)。 ...
分类:
编程语言 时间:
2020-05-04 17:07:41
阅读次数:
81
7.3 Using std::ref() and std::cref() 7.3 使用std::ref()和std::cref() Since C++11, you can let the caller decide, for a function template argument, whethe ...
分类:
其他好文 时间:
2020-05-02 19:21:26
阅读次数:
82
#include<iostream> using namespace std; template<typename T ,void (*f)(T& v)> void foreach(T arr[], unsigned size) { for (size_t i = 0; i < size; i++) ...
分类:
其他好文 时间:
2020-05-02 15:22:27
阅读次数:
67