学习重点:容器类型内部的实现机制,顺便复习前面各章内容。容器类型的具体实现不需要特别关注(目前不需要会裸手写这么一个容器类型)

1、群体/线性群体

群体的概念

  1. 群体是指由多个数据元素组成的集合体。群体可以分为两个大类:线性群体和非线性群体
  2. 线性群体中的元素按位置排列有序,可以区分为第一个元素、第二个元素等
  3. 非线性群体不用位置顺序来标识元素

线性群体

  1. 在线性群体中,又可按照访问元素的不同方法分为直接访问、顺序访问和索引访问
  2. 本章(9章)中只介绍直接访问和顺序访问

2、直接访问的线性群体——数组类

2.1 简介

  1. 静态数组是具有固定元素个数的群体,其中的元素可以通过下标直接访问

    1. 缺点:大小在编译时就已经确定,在运行时无法修改
  2. 动态数组由一系列位置连续的、任意数量相同类型的元素组成
    1. 优点:其元素个数可在程序运行时改变
  3. vector就是用类模板实现的动态数组

2.2 例9-3 动态数组类模板程序

    1. 为什么有的函数返回引用

      • 如果一个函数的返回值是一个对象的值,就是右值,不能成为左值
      • 如果返回值为引用。由于引用是对象的别名,通过引用可以改变对象的值,因此是左值
    2. assert(sz>=0);:断言,当sz<0时程序退出,这个在异常处理中会讲,现在凑活用

2.3 例9-3 动态数组类模板程序

    • 指针运算符重载时不写返回值,也不写形参
    • 为什么需要指针转换运算符?

2.4 例9-4 Array类的应用

求范围2~N中的质数,N在程序运行时由键盘输入(判断质数用的是“查表法”)

参考:C++语言程序设计(第5版),郑莉,清华大学

【C++复习】第九章 模板与群体数据(2)的更多相关文章

  1. CentOS6安装各种大数据软件 第九章:Hue大数据可视化工具安装和配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  2. C++学习笔记46:模板与群体数据

    函数模板 创建一个通用功能的函数,支持多种不同的形参:简化重载函数的函数体设计: 语法形式 template <模板参数表> 函数定义:模板参数表的内容:类型参数:class(或typen ...

  3. Part-Eight 模板与群体数据的组织

    1.方法模板 #include<iostream> using namespace std; template<typename T> void outputArray(con ...

  4. 《数据结构与算法分析:C语言描述》复习——第九章“图论”——拓扑排序

    2014.07.04 17:23 简介: 我们考虑一种特殊的图: 1. 有向图 2. 只有一个连通分量 3. 不存在环 那么这样的图里,必然可以找到一种排序方式,来确定谁在谁的“前面”. 简单的来说可 ...

  5. Laxcus大数据管理系统2.0(11)- 第九章 容错

    第九章 容错 在当前,由于集群庞大的组织体系和复杂性,以及用户普遍要求低成本硬件,使得集群在运行过程中发生的错误概率,远远高于单一且性能稳定的小型机服务器,并且集群在运行过程中几乎是不允许停止的,这就 ...

  6. 《python for data analysis》第九章,数据聚合与分组运算

    # -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...

  7. Python 数据分析—第九章 数据聚合与分组运算

    打算从后往前来做笔记 第九章 数据聚合与分组运算 分组 #生成数据,五行四列 df = pd.DataFrame({'key1':['a','a','b','b','a'], 'key2':['one ...

  8. CSS3秘笈复习:第九章&第十章

    第九章 1.和链接有关的伪类: (1):link,未访问过的链接 (2):visited,已访问过的链接 (3):hover,鼠标悬停链接 (4):active,单击链接时 这四种方式一定要严格按上面 ...

  9. 精通Web Analytics 2.0 (11) 第九章: 新兴分析—社交,移动和视频

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第九章: 新兴分析-社交,移动和视频 网络在过去几年中发生了不可思议的发展变化:从单向对话到双向对话的转变; 由视频,Ajax和 ...

  10. Knockout应用开发指南 第九章:高级应用举例

    原文:Knockout应用开发指南 第九章:高级应用举例 1   Contacts editor 这个例子和微软为演示jQuery Data Linking Proposal例子提供的例子一样的提供的 ...

随机推荐

  1. SpringBoot启动失败问题

    SpringBoot启动失败问题 一.现象 pom.xml没有显示报错,也能查看到各种需要的依赖jar包,但在启动时显示 二.原因 网络不好导致maven导包失败或者导包不完整 三.解决办法 进入项目 ...

  2. 【Direct3D 12】配置编译环境

    创建桌面应用程序 使用Visual Studio Community 2019创建一个桌面应用程序. 配置SDK版本.头文件.依赖库 右键单击创建的项目名称,选择Properties. 在Config ...

  3. 四大组件之内容提容者ContentProvider

    参考:Android开发基础之内容提容者ContentProvider Android四大组件 内容提供者是四大组件之一,还记得Android的四大组件吗? 前面我们学习了三大组件了,对吧! 其中有: ...

  4. nginx 与 k8s ingress 配置转发websocket

    环境 10.1.100.10:70 是后端websocket 服务 需要通过nginx 向后端转发,nginx 配置文件如下 # cat test-ue4.conf map $http_upgrade ...

  5. Transformers Pipelines

    pipelines 是使用模型进行推理的一种很好且简单的方法.这些pipelines 是从库中抽象出大部分复杂代码的对象,提供了一个简单的API,专门用于多个任务,包括命名实体识别.屏蔽语言建模.情感 ...

  6. BDD测试和TDD测试

    BDD测试和TDD测试 TDD TDD是测试驱动开发(Test-Driven Development)的缩写,是敏捷开发中的一项测试技术,也是一种设计方法论.她的大概思路是:先针对每个功能点抽象出接口 ...

  7. RabbitMQ的安装(linux版)

    原文地址:https://blog.csdn.net/jiguquan3839/article/details/91346261 注意:在web管理页面登录提示"User can only ...

  8. iOS开发之桌面快捷方式Quick Actions

    长按桌面APPIcon图标快捷操作添加功能开发 在支持 3D Touch 的设备上,Quick Actions 可以让用户更快,更少的操作步骤去完成他们最常做的事情,其中这么多操作可以通过主屏幕直接完 ...

  9. C# 将Dll文件打包到exe中

    首先在资源管理里面将需要使用的dll添加进入 然后将dll文件的生成操作改成嵌入的资源 然后新建一个类  LoadResourceDll.cs 1 using System; 2 using Syst ...

  10. java对excel的操作

    1.对比任意两张excel表是否有不同行 并输出哪一行那一列不同 2.包含解析合并单元格方法 3.比较主要思路 a.解析excel: b.遍历第一张表数据所有行 c.遍历第二张表数据所有行 d.遍历第 ...