【COMP282 LEC3 LEC4 LEC5】

LEC 3

Overloading 超载

  1. Two functions can have the same name if they have different parameters

  2. The compiler will use the one whose parameters match the ones you pass in

Performing Addition "+"

重载一个operator + ,这个operator+函数被定义为ruler类的成员函数

  1. temp是一个新的ruler常量用来储存相加后的结果

  2. feet和inches分别表示是英尺和英寸,类似磅和便士,(但是12英寸=1英尺)所以是this的feet和ru的feet相加,this的inches和ru的inches相加

Comparison Operators "<" ">"

这种重载作用大概就是指本来"==","<",">"有定义了,但是引入了英寸和英尺两个单位,所以重新定义这三个比较符号

LEC 4

Unary and binary operators

There are 3 types of operators:

Prefix-unary, postfix-unary and binary

E.g. -a would be prefix-unary, a++ would be postfix-unary and a+b would be binary

前缀一元运算符,后缀一元运算符,二元运算符

Templates 模版?

In overloading, we provide multiple implementations of the same function for different parameters

With templates, we provide one implementation that behaves similarly for different parameters (still implementing one function)

Class templates

为了解决返回多个objects的问题?

LEC 5

standard template library

Contains three main parts:

1.Containers: standard data structures

2. Iterators: standard ways to move through the standard data structures

  1. Algorithms: uses iterator(s) (usually 2 and often some method as parameters) to give their results

Example containers : Vectors

Vector is essentially automatic resizing array 自动调整数组size

vector<int> is roughly equal to ArrayList<Integer> in Java

Vector access

Containers

1. Vector:

automatic resizing arrays (i.e. O(1) for accessing/updating elements and adding to the end -- adding elements elsewhere cost O(n))

2. Arrays:

arrays (same complexity) Faster than vector due to less overhead

3. Deques:

More advanced automatic resizing array that allows inserting/deleting at the start as well in O(1) time Slower and have more overhead than vector

4. Set and map (and their multi- variants):

balanced trees(O(log n) accessing/updating/adding/removing elements)

5. List:

doubled-linked list (O(1) traversing/updating/adding/removing elements -- can't really access)

6. Forward_list:

single-linked list

Example container: Multiset (Multiset is essentially a balanced tree)

Things are stored in ascending order (based on <) by default

You can do it with other orderings, but it looks a bit ugly...

Multiset access:

Iterators 迭代器是用于访问/操作其容器中的数据的对象

Iterators are objects for accessing/manipulating the data in their container Multiple levels of them:

Random access, bidirectional, forward, input = output

(Input and output are at the same level)

Syntax looks a little strange so we need to explain it

  1. Multiset/vector class has a member object called iterator

  2. In this example, the multiset/vector template is using integers

  3. So the iterator will point to an integer within the multiset/vector

Inserting/deleting using iterators

Iterator invalidation

这里it4是没有明确指代的 不能用auto it4 = store2.end();

而应该重新定义it4 :it4 = store2.end();

再去比较

STL Arrays

可以用function

相关推荐
一 乐25 分钟前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
Boilermaker199234 分钟前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维1 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
C_心欲无痕1 小时前
ts - tsconfig.json配置讲解
linux·前端·ubuntu·typescript·json
清沫1 小时前
Claude Skills:Agent 能力扩展的新范式
前端·ai编程
alonewolf_991 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子1 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34162 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
yinuo2 小时前
前端跨页面通信终极指南:方案拆解、对比分析
前端
恋爱绝缘体12 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit