【C++复习】第九章 模板与群体数据(2)
学习重点:容器类型内部的实现机制,顺便复习前面各章内容。容器类型的具体实现不需要特别关注(目前不需要会裸手写这么一个容器类型)
1、群体/线性群体
群体的概念
- 群体是指由多个数据元素组成的集合体。群体可以分为两个大类:线性群体和非线性群体
- 线性群体中的元素按位置排列有序,可以区分为第一个元素、第二个元素等
- 非线性群体不用位置顺序来标识元素
线性群体
- 在线性群体中,又可按照访问元素的不同方法分为直接访问、顺序访问和索引访问
- 本章(9章)中只介绍直接访问和顺序访问
2、直接访问的线性群体——数组类
2.1 简介
- 静态数组是具有固定元素个数的群体,其中的元素可以通过下标直接访问
- 缺点:大小在编译时就已经确定,在运行时无法修改
- 动态数组由一系列位置连续的、任意数量相同类型的元素组成
- 优点:其元素个数可在程序运行时改变
- vector就是用类模板实现的动态数组
2.2 例9-3 动态数组类模板程序
- 为什么有的函数返回引用
- 如果一个函数的返回值是一个对象的值,就是右值,不能成为左值
- 如果返回值为引用。由于引用是对象的别名,通过引用可以改变对象的值,因此是左值
assert(sz>=0);
:断言,当sz<0时程序退出,这个在异常处理中会讲,现在凑活用
- 为什么有的函数返回引用
2.3 例9-3 动态数组类模板程序
- 指针运算符重载时不写返回值,也不写形参
- 为什么需要指针转换运算符?
2.4 例9-4 Array类的应用
求范围2~N中的质数,N在程序运行时由键盘输入(判断质数用的是“查表法”)
|
参考:C++语言程序设计(第5版),郑莉,清华大学
【C++复习】第九章 模板与群体数据(2)的更多相关文章
- CentOS6安装各种大数据软件 第九章:Hue大数据可视化工具安装和配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- C++学习笔记46:模板与群体数据
函数模板 创建一个通用功能的函数,支持多种不同的形参:简化重载函数的函数体设计: 语法形式 template <模板参数表> 函数定义:模板参数表的内容:类型参数:class(或typen ...
- Part-Eight 模板与群体数据的组织
1.方法模板 #include<iostream> using namespace std; template<typename T> void outputArray(con ...
- 《数据结构与算法分析:C语言描述》复习——第九章“图论”——拓扑排序
2014.07.04 17:23 简介: 我们考虑一种特殊的图: 1. 有向图 2. 只有一个连通分量 3. 不存在环 那么这样的图里,必然可以找到一种排序方式,来确定谁在谁的“前面”. 简单的来说可 ...
- Laxcus大数据管理系统2.0(11)- 第九章 容错
第九章 容错 在当前,由于集群庞大的组织体系和复杂性,以及用户普遍要求低成本硬件,使得集群在运行过程中发生的错误概率,远远高于单一且性能稳定的小型机服务器,并且集群在运行过程中几乎是不允许停止的,这就 ...
- 《python for data analysis》第九章,数据聚合与分组运算
# -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...
- Python 数据分析—第九章 数据聚合与分组运算
打算从后往前来做笔记 第九章 数据聚合与分组运算 分组 #生成数据,五行四列 df = pd.DataFrame({'key1':['a','a','b','b','a'], 'key2':['one ...
- CSS3秘笈复习:第九章&第十章
第九章 1.和链接有关的伪类: (1):link,未访问过的链接 (2):visited,已访问过的链接 (3):hover,鼠标悬停链接 (4):active,单击链接时 这四种方式一定要严格按上面 ...
- 精通Web Analytics 2.0 (11) 第九章: 新兴分析—社交,移动和视频
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第九章: 新兴分析-社交,移动和视频 网络在过去几年中发生了不可思议的发展变化:从单向对话到双向对话的转变; 由视频,Ajax和 ...
- Knockout应用开发指南 第九章:高级应用举例
原文:Knockout应用开发指南 第九章:高级应用举例 1 Contacts editor 这个例子和微软为演示jQuery Data Linking Proposal例子提供的例子一样的提供的 ...
随机推荐
- 使用git cz 时报模块找不到 使用commitizen init cz-conventional-changelog --save --save-exact --force 又报下面错 头晕
使用git cz 时报模块找不到 使用commitizen init cz-conventional-changelog --save --save-exact --force 又报下面错 头晕 At ...
- 四大组件之广播接收者BroadcastReceiver
参考:Android开发基础之广播接收者BroadcastReceiver 什么是广播接收者? 我们小时候都知道,听广播,收听广播!什么是收听广播呢?打开收音机,调频就可以收到对应的广播节目了.其实我 ...
- 如何使用visual studio code的插件remote ssh远程操作virtual box虚拟机
0 Remote-SSH是什么?为什么要用它? The Remote-SSH extension lets you use any remote machine with a SSH server a ...
- python 操作配置文件(configparser模块)
用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser 配置文件信息: [DEFAULT] ServerAliveInterval = 45 Com ...
- Django 之 ModelForm
一 Django的form组件 forms组件 二 Django的model form组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的 ...
- Unity3D调用Android功能与组件(10.1):应用自启动
前言 我在Unity3D调用Android功能与组件(十)-BroadcastReceiver中介绍了如何使用Unity接入广播. 然而很多没有做过Android的小伙伴却表示 [这是神马玩意儿?干啥 ...
- 【闲话】Vscode+PlatformIO+esp-idf+esp32物联网开发小记之环境搭建
Vscode作为一款优秀的代码编辑器,具有极为方便快捷的代码辅助与拓展功能,使用熟练后开发效率大大提高,且作为典型的IDE,不需要花费大量的时间成本即可上手,Vscode结合各种插件,可以搭建出大部分 ...
- CCF 201812-1 小明上学
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- 小白之Python-基础中的基础03
序列,目前看来很基础,东西比较多,难度开始加大...加油吧,骚年 Python之序列 1.数据结构:序列.容器(序列:索引.映射:键).集合2.列表.元组.字符串.Unicode字符串.buffer对 ...
- Kubernetes初识
目录: 云原生 Kubernetes概述 1.K8S是什么 2.为什么要用K8S 3.Kubernetes集群架构与组件 K8S的特性 核心组件 Master组件 配置存储中心 Node组件 Kube ...