C++的基于对象编程范式、常用STL容器和C++11标准

前言

C++的基于对象编程范式、常用STL容器和C++11标准。


基于对象编程范式

面向过程编程范式的例子

#include <iostream>

using std::cout;
using std::endl;

int main()
{
    int num1 = 1;
    int num2 = 2;
    
    int sum = num1 + num2;

    cout << sum << endl;

    return 0;
}

基于对象编程范式的例子

#include <iostream>

using std::cout;
using std::endl;

class GetSum
{
public:
    int calculation(const int &num1, const int &num2)
    {
        int sum = num1 + num2;
        
        return sum;
    }
};

int main()
{
    int num1 = 1;
    int num2 = 2;

    class GetSum get_sum;
    int sum = get_sum.calculation(num1,num2);

    cout << sum << endl;

    return 0;
}

基于对象和面向对象编程范式的区别

基于对象编程范式:

  • 具有“封装”特性
  • 常用于中小项目

面向对象编程范式:

  • 具有“封装”、“继承”和“多态”特性
  • 使用虚函数、重写和设计模式等技术
  • 常用于大项目

常用STL容器

顺序容器:

  • 数组/向量
  • 链表
  • 队列

关联容器:

  • 图/映射
  • 集合
  • 对组
  • 元组

数组/向量

名称底层原理说明
array静态数组C++11标准
vector动态数组

链表

名称底层原理说明
list双向链表
forward_list单向链表C++11标准

队列

名称底层原理说明
deque管理数组+多个被管理数组
queuedeque容器适配器
priority_queue堆(完全二叉树)

名称底层原理说明
stackdeque容器适配器

图/映射

名称底层原理说明
map红黑树
multimap红黑树
unordered_map哈希表C++11标准
unordered_multimap哈希表C++11标准

集合

名称底层原理说明
set红黑树
multiset红黑树
unordered_set哈希表C++11标准
unordered_multiset哈希表C++11标准

对组

名称底层原理说明
pair结构体struct

元组

名称底层原理说明
tuple递归继承类C++11标准

总表

名称底层原理说明
array静态数组C++11标准
vector动态数组
list双向链表
forward_list单向链表C++11标准
deque管理数组+多个被管理数组
queuedeque容器适配器
priority_queue堆(完全二叉树)
stackdeque容器适配器
map红黑树
multimap红黑树
unordered_map哈希表C++11标准
unordered_multimap哈希表C++11标准
set红黑树
multiset红黑树
unordered_set哈希表C++11标准
unordered_multiset哈希表C++11标准
pair结构体struct
tuple递归继承类C++11标准

C++11标准

依据《C++ Primer中文版(第5版)》XXV页的“C++11的新特性”栏所列顺序

可能常用的用粗体标示

  • long long 类型
  • 列表初始化
  • nullptr 常量
  • constexpr 变量
  • 类型别名声明
  • auto 类型指示符
  • decltype 类型指示符
  • 类内初始化
  • 使用 auto 或 decltype 缩写类型
  • 范围 for 语句
  • 定义 vector 对象的 vector (向量的向量)
  • vector 对象的列表初始化
  • 容器的 cbegin 和 cend 函数
  • 标准库函数 begin 和 end 函数
  • 使用 auto 和 decltype 简化声明
  • 除法的舍入规则
  • 用大括号包围的值列表赋值
  • 将 sizeof 用于类成员
  • 范围 for 语句
  • 标准库 initializer_list 类
  • 列表初始化返回值
  • 定义尾置返回类型
  • 使用 decltype 简化返回类型定义
  • constexpr 函数
  • 使用=default 生成默认构造函数
  • 类对象成员的类内初始化
  • 委托构造函数
  • constexpr 构造函数
  • 用 string 对象处理文件名
  • array 和 forward_list 容器
  • 容器的 cbegin 和 cend 函数
  • 容器的列表初始化
  • 容器的非成员函数 swap
  • 容器 insert 成员的返回类型
  • 容器的 emplace 成员
  • shrink_to_fit
  • string 的数值转换函数
  • lambda 表达式
  • lambda 表达式中的尾置返回类型
  • 标准库 bind 函数
  • 关联容器的列表初始化
  • 列表初始化 pair 的返回类型
  • pair 的列表初始化
  • 无序容器
  • 智能指针
  • shared_ptr 类
  • 动态分配对象的列表初始化
  • auto 和动态分配
  • unique_ptr 类
  • weak_ptr 类
  • 范围 for 语句不能应用于动态分配数组
  • 动态分配数组的列表初始化
  • auto 不能用于分配数组
  • allocator::construct 可使用任意构造函数
  • 将=default 用于拷贝控制成员
  • 使用=delete 阻止拷贝类对象
  • 用移动类对象代替拷贝类对象
  • 右值引用
  • 标准库 move 函数
  • 移动构造函数和移动赋值
  • 移动构造函数通常应该是noexcept
  • 移动迭代器
  • 引用限定成员函数
  • function 类模板
  • explicit 类型转换运算符
  • 虚函数的 override 指示符
  • 通过定义类为 final 来组阻止继承
  • 虚函数的 override 和 final 指示符
  • 删除的拷贝控制和继承
  • 继承的构造函数
  • 声明模板类型形参为友元
  • 模板类型别名
  • 模板函数的默认模板参数
  • 实例化的显式控制
  • 模板函数与尾置返回类型
  • 引用折叠规则
  • 用 static_cast 将左值转换为右值
  • 标准库 forward 函数
  • 可变参数模板
  • sizeof…运算符
  • 可变参数模板与转发
  • 标准库 tuple 类模板
  • 新的 bitset 运算
  • 正则表达式库
  • 随机数库
  • 浮点数格式控制
  • noexcept 异常指示符
  • noexcept 运算符
  • 内联命名空间
  • 继承的构造函数与多重继承
  • 有作用域的 enum
  • 说明类型用于保存 enum 对象
  • enum 的前置声明
  • 标准库mem_fn 类模板
  • 类类型的 union 成员

大致分类

改进:

  • nullptr 常量
  • constexpr 变量
  • 定义 vector 对象的 vector (向量的向量)

语法糖:

  • auto 类型推导
  • 列表初始化
  • 范围 for 语句
  • lambda 表达式

智能指针:

  • shared_ptr
  • unique_ptr
  • weak_ptr

扩充容器:

  • array
  • forward_list
  • unordered_map
  • unordered_multimap
  • unordered_set
  • unordered_multiset
  • tuple

扩充库:

  • bitset
  • 正则表达式
  • 随机数

移动语义:

  • &&右值引用
  • std::move()
  • 移动构造函数和移动赋值运算符

面向对象编程范式相关:

  • explicit
  • =default
  • =delete
  • override
  • final

面向泛型编程范式相关:

  • 模板函数的默认模板参数
  • 可变参数模板

总结

C++的基于对象编程范式、常用STL容器和C++11标准。


参考资料


作者的话

  • 感谢参考资料的作者/博主
  • 作者:夜悊
  • 版权所有,转载请注明出处,谢谢~
  • 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
  • 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
  • 文章在认识上有错误的地方, 敬请批评指正
  • 望读者们都能有所收获

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值