当前位置: 首页 > news >正文

CS106L Standard C++ Programming (施工中)

philosophies of C++ design

  1. 程序员拥有完全的控制权,并需要对此负责
  2. 在代码中直接表达思想和意图
  3. 尽可能在编译时强制执行安全性
  4. 不浪费空间和时间
  5. 将杂乱的特性模块化
  6. 向下兼容

stream

std::ostringstream 定义一个写缓冲区,采用 << 从缓存区指针处写入字符串覆盖

std::istringstream 定义一个读缓存区,采用 >> 依据右变量的类型,从缓冲区指针开始读入并进行类型转换。更具体地说,指针会一直读取并向后移动直到遇到空白或制表符,然后指针重新指向空白或制表符的前一个位置。下一次进行缓存区读时,指针会跳过所有空白和制表符,直到下一个字符

事实上,std::istringstream是一种 std::istream,而 std::cin 是一个 std::istream类型的对象,std::cout同理

使用缓冲区而不是立即输出,避免了系统调用读写的昂贵开销,但 std::cerr是不使用缓存区直接输出

缓冲区的状态:Good/Fail/EOF/Bad bit,可通过一个缓冲区的成员函数进行访问 如.good()

当尝试读入的类型于缓存区中识别的类型不一致时,fail位会被设置为1,并且此后对该缓冲区的读入都会被冻结

modern C++ data type

类型别名 eg: using iter = std::vector <int>::iterator

auto 编译器从初值赋值自动推断类型 注意:用 constauto变量赋初值的时候不会有常量性

std::tuple类似 std::pair,用来表示多元组,通过 get<i>(x)访问多元组 x的第 i个元素,类似语法通过 set来设置元素的值

统一初始化:按照结构体中变量定义的顺序使用花括号进行初始化

STL

ez

template

C++ 使用 template 实现了类似泛型编程的功能

对于模板函数,可以使用 template <class T> 声明使用了类型为 T的参数

在编译的时候,编译器会对应不同的类型进行实例化,替换生成对应类型的函数;你也可以手动进行实例化 mymax<int>(114,514)加快编译速度

同样的,自定义的函数也可以作为模板函数的参数。注意在C++标准库中,部分模板函数只接受谓词函数,即返回布尔值的函数

lambda 函数:创建的是一个对象,但是表现得像一个轻量级函数,其声明如下

auto fun = [capture-clause](parameters)->return-value{//body};

编译器实际上会把它转化成一个类,由于这个类的名称未知,需要使用 auto

其中的 capture-clause 规定了该lambda 函数能够捕获的外部变量

class

使用构造函数和析构函数,可以定义一个类被创建和回收时的行为

操作符重载分为成员函数和非成员函数两种,前者在类中被定义,后者在类外被定义

部分操作符只能以其中一种形式进行重载,如我们重载std::cout<<,使得其能够输出我们自己定义的一个分数类,就只能采用非成员函数进行定义。在成员函数中,可以使用*this得到一个指向当前类的指针

操作符重载的基本原则是和基本类型规则保持一致,如定义分数类的+=时,为了和普通int a(a += 1) += 2;规则相匹配,运算符的返回值应该是一个对当前变量的引用,而非一个拷贝值

采用friend定义友元函数,使得一个位于类外部的函数能够访问类的私有变量

http://www.jsqmd.com/news/284125/

相关文章:

  • 2026年目前专业的RTO公司口碑排行榜单,RTO/活性炭箱/滤筒除尘器/旋风除尘器/沸石转轮+CO,RTO制造厂家排名
  • 2026年目前专业的RTO公司口碑排行榜单,RTO/活性炭箱/滤筒除尘器/旋风除尘器/沸石转轮+CO,RTO制造厂家排名
  • Comsol 超表面偏振转换:探索介质半波片与 1/4 波片设计
  • 英语_阅读_Smart apps_待读
  • 2026 年 1 月工业酯类溶剂厂家推荐排行榜,正丙酯/乙酯/丁酯/醋酸丁酯/乙酸乙酯/丙二醇甲醚醋酸酯/碳酸二甲酯/精甲酯,高纯度环保溶剂源头优选
  • 2026年当下靠谱的刀塔机工厂怎么选择,数控车床/4+4车铣/排刀机/四轴机/车铣复合/数控4+4,刀塔机品牌排行
  • 2025年本地市场贯入式砂浆检测仪供应商口碑排行榜单揭晓,混凝土裂缝综合检测仪/数显高强回弹仪/混凝土回弹仪检测仪销售厂家排行
  • 用React+Three.js 做 3D Web版搭建三维交互场景:模型的可视化摆放与轻量交互 - 指南
  • 三菱PLC FX3U与1PG定位模块控制松下伺服四轴案例:注释完整、结构清晰的伺服控制程序与M...
  • 2026年1月聚乙烯蜡厂家推荐排行榜:氧化聚乙烯蜡、裂解聚乙烯蜡,专业改性助剂源头供应商精选
  • 盘点主流小程序开发公司:从功能到服务多维对比
  • 盘点主流小程序开发公司:从功能到服务多维对比
  • 2026年输送机怎么选?热门品牌性能与价格大揭秘,Z型提升机/斗式提升机/连续提升机/链板输送机,输送机制造商怎么选
  • 跨模态注意力优化实战
  • 2026 年 1 月 MBR膜/中空纤维超滤膜/柱式超滤膜/绳型生物填料/RO膜厂家推荐排行榜:高效分离与稳定过滤的工艺核心组件精选
  • 照明产业源头厂家的核心优势与价值重塑
  • 开源同城跑腿小程序源码系统,全功能商业运营版详解
  • 2025年成都火锅排行出炉!这家地道老店本地人反复打卡,特色美食/美食/火锅/烧菜火锅/社区火锅成都火锅品牌哪家好
  • 开源同城跑腿小程序源码系统,全功能商业运营版详解
  • Flink BlackHole SQL Connector /dev/null 式“吞数据”Sink,压测与验证的神器
  • 再见Jenkins!这款自动化部署工具更强大,还贼带劲!
  • Java实习模拟面试实录:西安易谷网络小厂高频考点全解析(操作系统+多线程+Spring+JVM+数据库)
  • Flink SQL 压测最短闭环Print 验证正确性 + BlackHole 榨干性能上限(附 Join/Agg/TopN/UDF 模板)
  • 面向通用矩阵乘法(GEMM)负载的GPU建模方法:原理、实现与多场景应用价值
  • 2026年中央加湿系统十大公司,如顿加湿榜上有名
  • 分析吉林省车位划线正规企业,怎么选择靠谱又好用的?
  • STM32(6)--HAL2(TODO)
  • 2026年专业的代理记账推荐,河南嘉诺财务口碑排名靠前
  • 写论文找不到外国文献?方法合集来了!——实用检索策略与资源平台推荐
  • 2025年电缆网套采购指南:回购率高的实力厂商推荐,链条吊具/高强缆绳/钢锭吊具/吊装带,电缆网套生产商哪家好