函数模板

创建一个通用功能的函数,支持多种不同的形参;简化重载函数的函数体设计;

语法形式

template <模板参数表>

函数定义:
模板参数表的内容:
类型参数:class(或typename)标识符

常量参数:类型说明符,标识符

模板参数:template<参数表>class 标识符

例子:

template <class T> void outputArray(const T* array, int count){}

类模板

类模板的作用:

使用类模板使用户可以为类声明一种模式,使得类中的某些数据成员,某些成员函数的参数

某些成员函数的返回值,能取得任意的类型(包括基本数据类型和用户自定义类型)

类模板的声明

类模板template<模板参数表> class 类名 {类成员声明};

如果要在类模板外定义成员函数,采用如下形式:

template <模板参数表> 类型名 类名 <模板参数标识符列表>::函数名(参数表)

#include <iostream>
#include <cstdlib> using namespace std;
struct Student
{
int id;
float gpq;
}; template <class T>
class Store {
//类模板实现对任意类型进行存取
private:
T item;
bool haveValue;
public:
Store();
T &getElem();
void putElem(const T &x);
}; template <class T>
Store<T>::Store():haveValue(false) {} template <class T>
T &Store<T>::getElem()
{
//
return item;
} template <class T>
void Store<T>::putElem(const T &x)
{
//
} int main()
{
Store<int> s1, s2;
s1.putElem();
s2.putElem(-);
Student g = { , };
Store<Student> s3;
s3.putElem(g);
Store<double>d;
d.getElem();
}

线性群体的概念:
群体是由多个数据元素组成的集合体,分为:线性群体和非线性群体

非线性群体不用位置顺序来标识元素

在线性群体中,可以按照访问元素的不同方法分为直接访问、顺序访问,和索引访问;

数组类模板

动态数组由一系列位置连续的,任意数量相同类型的元素组成;

判断是否越界:

assert(n>=0 &&n<size);

指针转换运算符的作用

#include <iostream>
using namespace std; void read(int *p, int n)
{
for (int i = ; i < n; i++)
{
cin >> p[i];
}
} int main()
{
int a[];
read(a, );
return ;
}
//上述的例子可以实现指针转化,而以下的例子不行,因此需要指针转换运算符
#include <iostream>
#include "Array.h" void read(int *p, int n)
{
for (int i = ; i < n; i++)
{
cin >> p[i];
}
} int main()
{
Array<int> a();
read(a, );
return ;
}

C++学习笔记46:模板与群体数据的更多相关文章

  1. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  2. OpenCV 学习笔记(模板匹配)

    OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...

  3. SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题

    目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...

  4. Python Flask学习笔记之模板

    Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ...

  5. 机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据

    机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据 关键字:PCA.主成分分析.降维作者:米仓山下时间:2018-11-15机器学习实战(Ma ...

  6. tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)

    tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...

  7. 【转】Pandas学习笔记(二)选择数据

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  8. C++学习笔记之由文本文件读取数据到vector模板建立的二维数组 并存储为新的文本文件

    阅读本文可首先参考: C++学习笔记之输入.输出和文件 测试数据: /*读取txt文件到二维数组*/ #include <iostream> #include <fstream> ...

  9. Angular 5.x 学习笔记(1) - 模板语法

    Angular 5.x Template Syntax Learn Note Angular 5.x 模板语法学习笔记 标签(空格分隔): Angular Note on github.com 上手 ...

  10. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

随机推荐

  1. Java+selenium之WebDriver页面元素的操作(三)

    1. 输入框(text field or textarea) WebElement we = driver.findElement(By.id("id")); //将输入框清空 w ...

  2. GAN-生成对抗网络原理

    最近一直在看GAN,我一直认为只有把博客看了一遍,然后再敲一遍.这样才会有深刻的感悟. GAN(生成式对抗网络)(GAN, Generative Adversarial Networks )是一种深度 ...

  3. 函数wait和waitpid

    函数wait 一个进程在终止时会关闭所有文件描述符,释放在用户空间释放的内存,但它的PCB还保留着,内核在其中保存一些信息:如果是正常终止时则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号 ...

  4. 一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现

    1:首先搞好实体类对象: write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toStrin ...

  5. EF Core Migration

    //添加migrations dotnet ef migrations add [名称] //根据model更新sql表结构 dotnet ef database update //删除最新的migr ...

  6. [转] mongoDB与mongoose

    mongoDB简介 mongoDB与一些关系型数据库相比,它更显得轻巧.灵活,非常适合在数据规模很大.事务性不强的场合下使用.同时它也是一个对象数据库,没有表.行等概念,也没有固定的模式和结构,所有的 ...

  7. 【loj6029】「雅礼集训 2017 Day1」市场&&【uoj#228】基础数据结构练习题

    题解: 这两道题加上区间取min max应该算线段树几道比较不寻常的题目 其实也是挺好理解的 对于区间/d 显然在log次后就会等于0 而我们注意到如果区间中数都相等那么就可以一起除 也就是说每个区间 ...

  8. sparkStreaming消费kafka-1.0.1方式:direct方式(存储offset到zookeeper)-- 2

    参考上篇博文:https://www.cnblogs.com/niutao/p/10547718.html 同样的逻辑,不同的封装 package offsetInZookeeper /** * Cr ...

  9. day8.python文件操作

    打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...

  10. PHP加密解密方法,使用openssl加密解密

    /** * des 加密算法 */ function do_mencrypt($input, $key) { if (!function_exists("mcrypt_module_open ...