More Exceptional C++ 读书笔记

Exceptional.C++ Exceptional.C++中文 立即下载

More Exceptional C++ 读书笔记

 Item 1 Switching Streams

 (1): 多考虑易读性,避免编写过渡简洁但是不易懂,不易维护的代码;
  
  记个相当简洁的流切换代码:
  (argc > 2 ? ofstream(argv[2], ios::out|ios::binary) : cout ) << (argc > 1 ? ifstream(argv[1],      ios::in|ios::binary) :  cin).rdbuf();


 (2): 设计函数时
  a: 优先考虑可扩展性,但对于一个简单问题的处理不应当采用过渡设计和过于专一的发放,要权衡这两者;
  b: 多考虑封装,将问题分离开;只要可能,就应当让一段代码只拥有一个功能;


 Item 2Predicates, Part 1: What remove() Removes;

 (1):  remove()删除在[first,last)范围内的所有value 实例remove()以及remove_if()并不真正地
  把匹配到的元素从容器中清除即容器的大小保留不变而是每个不匹配的元素依次被赋
  值给从first 开始的下一个空闲位置上返问的ForwardIterator 标记了新的元素范围的下一个
  位置例如考虑序列{0,1,0,2,0,3,0,4} 假设我们希望删除所有的0 则结果序列是
  {1,2,3,4,0,3,0,4} 1 被拷贝到第一个位置上2 被拷贝到第二个位置上3 被拷贝到第三个位
  置上4 被拷贝到第四个位置上返回的ForwardIterator 指向第五个位置上的0 典型的做法
  是该iterator 接着被传递给erase() 以便删除无效的元素内置数组不适合于使用remove()
  和remove_if()算法因为它们不能很容易地被改变大小由于这个原因对于数组而言
  remove_copy()和remove_copy_if()是更受欢迎的算法.


 (2):   一个remove_nth的正确实现:
  template<FwdIter>
  FwdIter remove_nth(FwdIter first, FwdIter last, size_t  n)
  {
   assert(distance(first, last) >= n);
   advance(first, n);
   if(first != last)
   {
    FwdIter dest = first;
    return copy(++first, last, dest);
   }
   return last;
  }

 (3): 多考虑泛型算法 + 断言的形式,而不是重新实现一个泛型算法;

 (4): 所谓断言是一个函数指针或者函数对象, 返回一个bool,泛型算法依据返回值执行相应操作;

 (5): stateful 断言;不依赖泛型算法传递对象到operator(),而是根据调用次数独立的自动更新函stateful断言内的数据;

 (6): stateful断言对泛型算法的要求:
  a: 泛型算法必须用一个恒定的函数对象,而不能用其拷贝来作运算;
  b: 泛型算法必须把函数对象按照已知的顺序提交给每一个容器中的元素;
  
  c:  一个安全的stateful断言:


  
  template<class T>
  class CountedPtr
  {
  private:
   class Impl
   {
   public:
    Impl(T* pp) : p(pp), refs(1) {}
    ~Impl() { delete p; }
    T*  p;
    size_t refs;
   };
   Impl *impl_;
  public:
   explicit CountedPtr(T *p) : impl_(new Impl(p) ) {}
   ~CountedPtr() { Decrement(); }
   CountedPtr(const CountedPtr &other) : impl_(other.impl_) { Increment(); }
   CountedPtr& operator=(const CountedPtr& othher)
   {
    if(impl_ != other.impl_)
    {
     Decrement();
     impl_ = other.impl_;
     Increment();
    }
    return *this;
   }

   T* operator->() const { return impl_->p;}
   T& operator*() const { return *(impl_->p); }
  private:
   void Dcrement()
   {
    if(--(impl_->refs) == 0)
     delete impl_;
   }
  
  

[计算机科学经典著作].Addison.Wesley.-.More.Exceptional.C++.pdf 立即下载

相关推荐

exceptional c++ 与 more exceptional c++ 英文版

英文版 C++经典书籍 英文版看了也还行,主要是能锻炼自己,豆瓣评分8.4 加油

more exceptional c++中文版

more exceptional c++中文版

Exceptional C++(中文版)和More Exceptional C++(中、英文版)

Exceptional C++(中文版)和More Exceptional C++(中、英文版)

抖音短视频数据抓取实战系列(一)——模拟器性能对比与优化配置

本文是抖音短视频数据抓取实战系列的开篇,重点探讨了模拟器选型与优化配置。通过对比雷电、夜神、逍遥三大主流模拟器在性能、抖音兼容性及抓包友好度上的表现,文章指出雷电模拟器因其稳定的桥接网络模式和良好的兼容性,是数据抓取的优选。并提供了雷电模拟器从安装、网络桥接到系统优化的详细配置指南,旨在帮助读者构建稳定高效的抓取环境。

weixin_29230901的博客 246

同态加密与SEAL库实战:CKKS参数调优避坑指南

本文深入探讨了同态加密技术中CKKS方案的参数调优实践,重点解析了SEAL库中`poly_modulus_degree`、`coeff_modulus`和`scale`三大核心参数的配置技巧与避坑指南。通过实战案例展示了如何平衡计算深度、精度与性能,为开发者提供了一套完整的参数优化方法论,帮助避免常见的'scale out of bounds'等错误,显著提升同态加密应用的可靠性和效率。

weixin_29315569的博客 228

避坑指南:STM32H7不同DMA控制器(MDMA/DMA2D/BDMA)到底该用哪个?

本文深入解析STM32H7系列芯片的DMA控制器选型策略,涵盖MDMA、DMA2D、BDMA等不同控制器的架构原理与性能对比。通过实际项目案例,提供高速TCM数据搬运、GUI加速、低功耗传输等场景的选型决策树,并分享性能优化与调试技巧,帮助工程师避开常见陷阱,提升系统效率。

weixin_26876073的博客 447

AI赋能工业自动化:传感器大数据实战

工业自动化中AI与传感器大数据的结合,显著提升了生产效率与可靠性。关键技术包括实时数据处理、边缘计算和数字孪生,未来将进一步向自主决策系统演进。

AFAGA_x的博客 414

【Java开发者必看】LangChain4j实战指南:使用AIService轻松集成聊天记忆Chat Memory到SpringBoot应用,通过封装多轮复杂对话,使聊天记忆的实现变得简单

聊天记忆是指在与用户的多轮对话过程中,能够记住之前的交互内容,从而提供更加连贯和个性化的回复。LangChain4j支持通过ChatMemoryProvider接口实现聊天记忆功能。

Spring Boot-Common On With You 448

深入解析机器人软件开发中的核心:状态机管理(FSM)—— 理论、实践与优化

状态机(FSM)是机器人软件开发中管理复杂行为逻辑的核心工具,广泛应用于导航、任务执行、故障处理等场景。本文系统探讨状态机的基础理论(定义、要素)、主流设计模式(经典FSM、分层状态机HSM、行为树BT),以及工业级实现方法(代码架构、线程安全、调试技巧)。通过移动机器人导航和机械臂任务执行的案例,分析分层状态机的实际应用,并总结常见陷阱(如状态爆炸、阻塞操作)与优化策略(异步化、事件过滤)。

郑伟强dev的专栏 292

嵌入式代码审计中常见的漏洞(四)

经过漫长时间的迭代更新,内容从一开始的碎片化网罗搜集,到排版与整合划分,再到学习与实践验证,最后摒弃初始,用自己的语言与实践结论通俗的将它展现出来。强化知识技能的同时也为读者带来更好的阅读体验。 本篇介绍了以下代码安全问题: 编号 漏洞 1 敏感信息硬编码 2 未初始化安全 3 越界访问 4 迭代器失效 5 迭代器尾部解引用

武天旭的博客 3318

15、电科院FTU检测标准学习笔记-基本性能

作者简介:本人从事电力系统多年,岗位包含研发,测试,工程等,具有丰富的经验在配电自动化验收测试以及电科院测试中,本人全程参与,积累了不少现场的经验。

sixtome 1864

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: Exceptional C++ 读书笔记
下一篇: Anders Hejlsberg语录
SolidusSnake
博客等级 码龄20年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值