C++学习笔记32:泛型编程拓展1

标准模板库的内容

  • 标准模板类:复数、序偶
  • 迭代器
  • 标准容器:向量,表,栈,队列,集合,映射等
  • 标准算法:查找,排序等

标准模板库型式的使用方法

  • “<>”:模板名称<数据对象基型式>数据对象名称;
  • 例子1:complex<double>a(1.0,2.0);
  • 例子2:pair<string,string>name("zhang","san");(序偶)
  • 例子3:vector<int>v(8);

复数

一般说明

  • 头文件:“complex”
  • 模板名:complex<>
  • 基型式:float,double,long double
  • 首选double,float精度低,long double 已弃用

实部与虚部

  成员函数real()和imag()

复数操作

  复数全部操作均为可以按照数学格式进行

  cout,cin,均已重载;格式为(real,imag)

序偶

一般说明

  • 头文件:“utility”
  • 模板名:pair<>
  • 用于表示总是成对出现的两个对象
  • 例子1:pair<int,double>a(1,1.0);
  • 例子2:pair<string,string>name("zhang","san");

使用规则

  • 公开的数据成员:first,second
  • 例子:cout << name.first << "," << name.second;
  • 序偶比较:先比较first大小,相同时比较second大小
  • make_pair:构造序偶的辅助函数
  • 例子:pair<int,double> a; a = make_pair(1,1.0);

向量

向量的目的

替代数组,可以像数组一样使用向量

向量的使用

  • 定义格式:vector<int> v(8);//包含8个整数的元素
  • operator[]:已重载,使用格式v[i]访问第i个元素
  • 向量可以整体赋值
  • size():返回向量中元素的数目
  • capacity:返回向量当前可存储的最多元素数目
  • clear():删除向量所有的元素,但不释放向量本身
  • resize(int newsize):重新设置向量容量

迭代器

迭代器的性质

  • 通过迭代器访问容器中的数据对象
  • 类似指针,数组索引的功能:通过指针加减与数组下标运算获得下一数据对象
  • 迭代器可以是指针,但并不必须是指针,也不必总是使用数据对象的地址

迭代器的使用方法

  • 声明迭代器变量
  • 使用引领操作符访问迭代器指向的当前目标对象
  • 使用递增操作符获得下一对象的访问权
  • 若迭代器新值超出容器的元素范围,类似指针值变成NULL,目标对象不可引用

迭代器的分类

  • 输入迭代器:提供对象的只读访问
  • 输出迭代器:提供对象的只写访问
  • 前向迭代器:提供对象的正向(递增)读写访问
  • 双向迭代器:提供对象的正向与反向(递增与递减)读写访问
  • 随机访问迭代器:提供对象的随机读写访问
时间: 2024-10-14 13:10:31

C++学习笔记32:泛型编程拓展1的相关文章

C++学习笔记34:泛型编程拓展3

输入流迭代器 #include <iostream> #include <iterator> #include <algorithm> #include <vector> using namespace std; int main() { vector<int> v(4); vector<int>::iterator it = v.begin(); cout << "enter four ints separat

C++学习笔记32 谓词函数

首先来看看百度百科对"谓词函数"的定义说明: 1定义编辑 一个判断式,一个返回bool值的函数或者仿函数.几元就是函数有几个参数,至于定义和使用,函数定义和一般的函数定义一样,仿函数就是写个类,然后重载operator().使用就是在那些以这种需要返回bool值的函数作参数的函数里用了. 一元谓词函数举例如下 1,判断给出的string对象的长度是否小于6 bool GT6(const string &s) { return s.size() >= 6; } 2,判断给出

List继承体系实现内幕和方法操作源码揭秘之Scala学习笔记-32

package com.leegh.dataset /** * @author Guohui Li */object List_Interal { def main(args: Array[String]): Unit = { val list = List(1, 2, 3, 4, 5) val listAny: List[Any] = list println(list.isEmpty) println(list.head) println(list.tail) println(list.le

Android学习笔记(32):通知推送Notification

Notification用于显示在手机状态栏的通知.一般通过NotificationManager服务来发送通知. Notification.Builder类可以让我们更加方便的创建Notification对象. Notification.Builder常用方法: setAutoCancel():设置点击通知后,状态栏自动删除通知 setContentText():设置通知内容 setContentTitle():设置通知标题 setContentIntent():设置点击后要启动的程序组件对应

Java学习笔记32

Stack继承了Vector类,Stack类似于"栈",它是一种后进先出(LIFO)的对象堆栈,通过五个操作对类Vector进行扩 展,允许将向量视为堆栈.它提供了通常的push和pop操作,以及取堆栈顶点的peek方法,测试堆栈是否为空的 empty方法.在堆栈中查找并确定到堆栈顶距离的search方法. 我们来看下图,加深对栈的理解: 根据上图,我们知道Stack类似于栈,我们将栈比喻成一个桶,底部是封住的,现在我们现将Object_1存入栈中,然 后是Object_2接着是Obj

【MongoDB学习笔记32】MongoDB修改副本集配置

一.删除副本集成员 spock:PRIMARY> rs.config()    {             "_id" : "spock",             "version" : 1,             "members" : [                     {                             "_id" : 0,                  

android学习笔记32——资源

Android应用资源 资源分类: 1.无法直接访问的原生资源,保存于asset目录下 2.可通过R资源清单类访问的资源,保存于res目录下 资源的类型以及存储方式 android要求在res目录下用不同的子目录来保存不同的应用程序,如下图:

Java学习笔记32(集合框架六:Map接口)

Map接口与Collection不同: Collection中的集合元素是孤立的,可理解为单身,是一个一个存进去的,称为单列集合 Map中的集合元素是成对存在的,可理解为夫妻,是一对一对存进去的,称为双列集合 Map中存入的是:键值对,键不可以重复,值可以重复 Map接口中的常用集合: 1.HashMap:哈希表的存储结构,但是无法保证存取顺序 2.LinkedHashMap:存储数据采用的是哈希表和链表,可以有顺序 Map接口的常用方法: 示例: package demo; import ja

C++ Primer 学习笔记_80_模板与泛型编程 --类模板成员

模板与泛型编程 --类模板成员 引言: 这一节我们介绍怎样实现前面提到的Queue模板类. 标准库将queue实现为其他容器之上的适配器.为了强调在使用低级数据结构中设计的编程要点,我们将Queue实现为链表.实际上,在我们的实现中使用标准库可能是个更好的决定!!-_-. 1.Queue的实现策略 如图所示,我们实现两个类: 1)QueueItem类表示Queue的链表中的节点,该类有两个数据成员item和next: a. item保存Queue中元素的值,它的类型随Queue的每个实例而变化: