C++学习笔记46:模板与群体数据
函数模板
创建一个通用功能的函数,支持多种不同的形参;简化重载函数的函数体设计;
语法形式
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:模板与群体数据的更多相关文章
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- OpenCV 学习笔记(模板匹配)
OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...
- Python Flask学习笔记之模板
Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ...
- 机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据
机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据 关键字:PCA.主成分分析.降维作者:米仓山下时间:2018-11-15机器学习实战(Ma ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)
tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...
- 【转】Pandas学习笔记(二)选择数据
Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...
- C++学习笔记之由文本文件读取数据到vector模板建立的二维数组 并存储为新的文本文件
阅读本文可首先参考: C++学习笔记之输入.输出和文件 测试数据: /*读取txt文件到二维数组*/ #include <iostream> #include <fstream> ...
- Angular 5.x 学习笔记(1) - 模板语法
Angular 5.x Template Syntax Learn Note Angular 5.x 模板语法学习笔记 标签(空格分隔): Angular Note on github.com 上手 ...
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
随机推荐
- 【C++ Primer | 10】再探迭代器
插入迭代器 1. 测试代码: #include<iostream> #include<vector> #include<list> #include<iter ...
- CDOJ 1962 天才钱vs学霸周2【最大流】
以s=0,t=n+m+1分别为超级源点和超级汇点.网络流中的流量以0为开始,题目要求从1到20,我们先把每个点都减去1,即ai - m,bi - n.然后源点s与n个顶点连容量为ai的路,汇点t与m个 ...
- asp.net core 2.0 webapi集成signalr
asp.net core 2.0 webapi集成signalr 在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.N ...
- js中slice splice substring substr区别
https://www.jb51.net/article/62165.htm 1.slice(start,end) # 字符串 2.splice (位置,删除个数,添加元素)# 针对arrary ...
- Kudu的卸载(cdh)
卸载kudu 1):删除kudu相关包 rm -rf $(find / -name "*kudu*") 2):卸载kudu相关依赖 查询节点的kudu依赖: rpm -qa | g ...
- Codeforces 765F Souvenirs 线段树 + 主席树 (看题解)
Souvenirs 我们将询问离线, 我们从左往右加元素, 如果当前的位置为 i ,用一棵线段树保存区间[x, i]的答案, 每次更新完, 遍历R位于 i 的询问更新答案. 我们先考虑最暴力的做法, ...
- selenium WebDriver 对浏览器标签页的切换
关于selenium WebDriver 对浏览器标签页的切换,现在的市面上最新的浏览器,当点击一个链接打开一个新的页面都是在浏览器中打开一个标签页,而selenium只能对窗口进行切换的方法,只能操 ...
- php 操作数据库
$datetoday = date('Y-m-d'); $datetime = $thedate; $data_info = $data; $db = array( 'dsn' => 'mysq ...
- netty03(基于4.1.23.Final 版本的案例)
基于前面的netty01和netty02修改一下版本,可以点进去的 将maven依赖版本改了一下 <!-- netty版本:netty-5.0.0.Alpha2 http://files.cnb ...
- 设计模式之单例模式及应用demo
单例模式是创建型模式之一. 单例模式顾名思义是单例的,也就是只有一个实例化对象,这都来源于它的私有化构造函数. 单例模式特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3. ...