STL学习笔记
王大碗Dw
志不强者智不达
成为自己小时候想象的样子!
展开
-
STL笔记09 类模板遇上static关键字
我们知道在类中使用staitc关键字的时候,static不属于实例,而属于类本身。但是在模板类中,作为类本身一开始无法初始化,所以static成员应该就不会属于类本身;那么static关键字到底属于哪?我们通过写一个小的示例程序来观察一下:#include<iostream>using namespace std;template<class T>class Person {public: static int a;};//类外初始化template&原创 2021-04-11 15:53:34 · 171 阅读 · 0 评论 -
STL笔记08类模板的h和cpp文件如何编写及会遇到的问题!
正常来说,我们编写一个类,一般将h文件和cpp文件进行分离,h文件定义类和函数,cpp文件中进行函数的实现; 然后提供给其他cpp文件调用。那么如果也这样编写类模板会出现什么问题呢?我们来看源码实现.h文件:定义了一个模板类#pragma oncetemplate<class T>class Person{public: Person(T age); ~Person(); void Show();private: T m_age;};.cpp文件:生命.原创 2021-04-08 15:52:30 · 260 阅读 · 0 评论 -
STL笔记07模板类如何写友元函数,不要滥用!
上来先贴结论:类模板类外实现不要滥用友元友元函数先来复习一下友元函数。友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。问题:根据友元函数的特性,他是非成员函数;在模板类中使用友元函数常常会遇到这么一个报错!无法解析的外部符号错误代码示例:#include<iostream> using namespace std; template<cl.原创 2021-04-07 21:29:50 · 394 阅读 · 2 评论 -
STL初学者入门笔记06类模板派生普通类和模板类
模板类派生普通类模板类派生普通类时,必须要声明类型!模板类派生时,需要具体化模板类,因为C++编译器需要知道,父类的数据类型具体时什么样子的,才可以分配内存。即 要知道父类所占内存大小是多少,只有数据类型固定下来,才知道如何分配内存。示例:template<class T>class Person {public: Person() { m_age = 0; }private: T m_age;};class sonPerson : public Perso原创 2021-04-05 22:45:35 · 241 阅读 · 0 评论 -
STL初学者入门笔记05函数模板实例对char和int数组进行排序
首先顶一个打印函数模板template<class T>void PrintArray(T *arr, int len){ for (int i = 0; i < len; i++) { cout << arr[i] << " "; } cout << endl;}定义排序函数模板template<class T>void MySort(T *arr, int len){ for (int i = 0; i &原创 2021-04-05 12:05:27 · 226 阅读 · 0 评论 -
STL初学者入门笔记04类模板
我们的模板不止可以定义函数,还可以定义类!关于函数模板我们在之前的几篇文章已经涉及过了,本文开始类模板的学习。关键字类模板的一般定义模板template<class T>class Person{public:private:}类模板和函数模板的区别函数模板在调用的时候可以自动类型推导类模板必须显式指定类型例如:定义一个Person类template<class T>class Person{public: Person(T id,T age)原创 2021-04-05 11:36:04 · 148 阅读 · 0 评论 -
STL初学者入门笔记03模板函数实现原理剖析
需要理解编译过程!总结:事实上C++对函数模板进行了两次编译,第一次编译仅仅生成一个函数头,第二次编译则是在函数调用时根据模板的类型参数列表具体的实现这个模板对应的类型的函数实例,注意这里是根据类型参数列表来实现,而不是根据调用次数。这不是和没有使用模板,直接写两个函数一样么?没错就是一样的,只是C++将这个工作交从程序员手里移交给了编译器来做。转载 2021-04-05 11:21:44 · 225 阅读 · 0 评论 -
STL初学者入门笔记02函数模板和普通函数的区别
02函数模板和普通函数的区别综述函数模板和普通函数的区别?函数模板和普通函数在一起调用规则:代码示例说明综述函数模板和普通函数的区别? 函数模板不允许自动类型转化 普通函数能够自动进行类型转化函数模板和普通函数在一起调用规则: 函数模板可以想普通函数那样可以被重载 c++编译器优先考虑普通函数 如果函数模板可以产生一个更好的匹配,那么选择模板 可以通过空模板实参列表的语法限定编译器只能通过模板匹配代码示例说明定义函数模板和普通函数template<class T&g原创 2021-04-04 23:54:41 · 193 阅读 · 0 评论 -
STL初学者入门笔记01模板
stl是c++编程中非常重要的一个内容,之前这方面基础薄弱,后面学习工作中,将时常与stl打交道,所以在这里将stl从基础开始重新学习一遍!01模板概述模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;通常有两种形式:函数模板和类模板;1.函数模板针对仅参数类型不同的函数;2.类模板针对仅数据成员和成员函数类型不同的类。为什么有模板?使用模板的目的就是能够让原创 2021-04-04 23:34:13 · 372 阅读 · 0 评论