基于斯坦福cs106l的c++编程规范笔记
c++特性
- 更好的C C++支持
命令式编程
,一种编程风格,其中程序按顺序执行的命令序列。从这个意义上讲,C++ 可以看作是对C 编程语言,使日常命令式编程更加直观和更容易使用。课程阅读器的这一部分介绍了一些 C++ 最常用的库,包括标准模板库,并展示了如何使用这些库来构建命令程式。 此外,它探索了最初出现在 C++ 语言中的新原语。C 编程语言,即指针、C 字符串和预处理器。 - 数据抽象
C++与其兄弟C的最大区别在于_数据抽象_,程序执行的方式可以与程序执行的方式分开 程序员谈论那个程序。
- 面向对象编程
. 面向对象编程是一种完全不同的方式考虑程序设计,可以极大地简化复杂的软件系统。 钥匙 面向对象背后的概念很简单,但要真正体会到面向对象的力量 编程,您将需要一次又一次地看到它的运行情况。 这部分课程 读者探索了面向对象编程中的主要概念以及如何在 C++ 中实现它继承和多态。
- 泛型编程
泛型编程是一种编程风格,旨在构建可以解决一系列远远超出最初设想的问题的软件
履行。 虽然泛型编程的完整处理远远超出了介绍性的范围C++ 编程课,泛型编程的许多思想都可以访问并且可以从根本上改变了您对 C++ 编程的看法。
const
Can’t declare non-const reference to const variable Can’t declare non-const reference to const vari
模板
函数指针:将函数作为对象传递
stl
sequence:线性,有顺序 associative:不一定线性,有索引机制(map)
vector:有顺序的相同类型的数据集合,大小可控制 ---子属性:size:元素数量 ---capacity:单个元素大小 vector最常用,deque用于首部插入场合,list用于多种列表
associative(关联数组):有顺序的需要有比较方法,无序的需要哈希函数(更快) iterators(迭代器):用于访问容器中的所有数据 --常用函数,begin(),end(),iter++,*(pointer),== !=,=(赋值,复制),
输入输出流
First call to std::cin >> creates a command line
prompt that allows the user to type until they hit enter
- Each >> ONLY reads until the next whitespace
- Whitespace = tab, space, newline
- Everything after the first whitespace gets saved and
used the next time std::cin >> is called
- The place its saved is called a buffer
hashmap的c++实现
相关函数
1 | 构造函数HashMap(): |
涉及的c++特性
匿名函数 基本lambda语法 基本形式如下: 【capture】(parameters)->return-type {body}
typename function() return {x,y,z} 即用{}的参数初始化原函数返回的类型
ptrdiff_t:用于储存两个指针的差
conditional_t<func,x,y>如果func为true则x,为false则y
forward_iterator_tag:单方向迭代器(可读写) ++iter,iter+=1随后返回对自身的引用 iter++,先返回一个对自身的复制,随后iter+=1
std::move并不能移动任何东西,它唯一的功能是将一个左值强制转化为右值引用,继而可以通过右值引用使用该值,以用于移动语义。从实现上讲,std::move基本等同于一个类型转换:static_cast<T&&>(lvalue);
ate:从文件尾部开始 strsub(start,length) 移动语义(c++11新特性) clss(classname &&) 利用右值引用的部分数据直接初始化新的类,并在初始化之后将右值删除,可以通过std::move()强制转化左值为右值。