十一章 札记--C++ primer 之旅

谈谈 FOC和BLDC 电机控制 更具体地说,通过 “Park 变换”,我们可以把三相交流电流信号转换成两相直流电流信号,从而可以把三相交流电机的控制变得和两相直流电机控制一样简单。在内环 “电流环”中,一些比较重要的模块有 “Clark 变换” 和 “Park 变换” 等数学模块、电机电流信号检测模块以及能够提供电机的转速和转角位置信息的模块。日前,Qorvo 电机控制应用高级系统/应用工程师张绍发表了一个与 BLDC 和 FOC 相关的演讲,科普了 FOC 的相关知识,还讲解了 Qorvo 用于简化 FOC 实施方案的方法。 阅读详情
find 运算: 形参:两个迭代器,检查两个迭代器实参标记范围内的每一个元素。找到与给定值的元素,返回指向该元素的迭代器;如果没匹配元素,这返回第二个形参。

注意: 泛型算法从不执行容器操作,单独依赖迭代器和迭代器操作实现,算法基于迭代器及其操作实现,而并非基于容器操作。

泛型算法     头文件 <algorithm> 
泛化的算术算法 头文件 <numeric>

只读算法:
accumulate(begin,end, 初值);     在初值的基础上累加迭代器范围内的元素和。返回结果的类型是初值的类型
                                               注意:初值是必须的,算法通过初值确定迭代器累加元素的类型。

find_first_of( 查找的地方一对迭代器, 目标值的一对迭代器);两对迭代器之间元素只要可以使用== 操作符比较即可。

写容器元素的算法:
1、写入输入序列的元素: 传入的实参是 一对迭代器( bed,end ) ,只在指定范围内写入
     EX: fill( vec.begin(), vec.end(),0);
    
2、不检查写入操作的算法: 参数: 一个迭代器、 一个计数器 以及一个值。     
     EX: fill( vec.begin(), 10, 0) ; //  从vec 的begin开始,写入10个元素。 
     注意:这种操作是假设对指定的元素写操作是安全的,所以不检查目标的大小是否足以存储要写入的元素, 如果目标大小< 要写入的元素, 会导致严重的运行时错误。

3、back_inserter     头文件<iterator> 
     back_inserter 是迭代器适配器. 传递给back_inserter 的实参是一个容器的引用, back_inserter 生成一个绑定在该容器上的插入迭代器。试图通过这个迭代器给元素赋值时,赋值运算将调用push_back 在容器添加一个指定值的元素。
     EX: vector<int> vec;
             fill_n( back_inserter(vec), 10, 0);

4、写入目标迭代器的算法:向迭代器写入未知个数的元素。
     EX copy ( list.begin(), list.end(), back_inserter(vec)) ;
          头两个指定输入范围, 第三个指定目标序列的一个元素。


算法的   _copy 版本:
     对输入序列的元素做出处理,但不修改原来的元素,而是创建一个新序列存储元素的处理结果
     EX:
          replace( list.begin(), list.end(), 0, 42) ;  //  把 begin  和 end 之间值为0 的元素 替换为42.
          replace_copy( list.begin(), list.end(), back_inserter(ivec), 0, 42) ; // 调用函数后,list 没有改变,而是把改变了的list复制给了ivec。 

unique 使用:
     带有两个指定元素范围的迭代器参数。该算法“删除”相邻的重复元素。 其实就是重新排列了元素,把重复的元素排到序列的后面,所以序列的前半部分就是不重复的序列。 函数的返回 一个迭代器,指向无重复元素的下一个位置。


排序算法: 
     sort 和 stable_sort : 后者保留了相等元素的原始相对位置。

迭代器:  头文件 <iterator>
     1) 插入迭代器
               插入器: 迭代器适配器,带有容器函数,生成一个迭代器。用于在指定容器中插入元素。
                          三种插入器: back_inserter : 创建使用 push_back 的迭代器
                                               front_inserter :                push_front
                                               insert:                             insert ,带有两个参数:容器; 插入起始位置的迭代器
               
     2) iostream 迭代器
            istream_iterator 用于读取输入流
            ostream_iterator 用于写输出流

            iostream 迭代器构造函数:
               istream_iterator<T> in (strm) ;      创建从输入流strm 中读取 T 类型对象 的istream_iterator对象
               istream_iterator<T> in;                 istream_iterator 对象的超出末端迭代器
               
                    ostream_iterator <T> in(strm);     创建将T类型的对象写到输出流strm 的ostream_iterator 对象。
                 ostream_iterator <T> in(strm, delim); 同上,在写入过程中使用delim作为元素的分隔符。 delim 是以空字符结束的字符串(c风格字符串)
 注意: ostream_iterator对象必须与特定的流绑定在一起。
                     istream_iterator 如果不提供实参,则该迭代器指向超出末端位置。
                 ostream_iterator 分隔符必须是c 风格字符串。
          
                     EX: 
                              istream_iterator<int> in_iter(cin);
                  istream_iterator<int> eof;
                        vector<int> vec (in_iter,eof);
          
       流迭代器的限制:
          不能从 ostream_iterator 对象读入,不能写入 istream_iterator 
          ostream_iterator 赋值后就不能修改了
           ostream_iterator 没有 ->操作符

习题 11.18
 int main(int argc, char** argv)
 {
     if(argc < 3)
          throw runtime_error(" no enough input file ");
     ofstream even_file, odd_file;
     if(!open_file(even_file,argv[1]) ||  !open_file(odd_file,argv[2]))
          throw runtime_error( " open file fail " );
     ostream_iterator <int>even_ost(even_file," "), odd_ost(odd_file," ");
     istream_iterator <int>ist(cin),eof;
     while(ist!=eof)
     {
          if(*ist&1)
               *odd_ost++ = *ist;
          else
               *even_ost++ = *ist;
          ist++;
     }
}

    3)反向迭代器

反向迭代器需要使用自减操作符。 流迭代器不能创建反向迭代器
反向迭代器与其他迭代器的关系 .    base();

    
迭代器种类:
     1) 输入迭代器:      读,不能写,只支持自增运算。
                             
     2) 输出迭代器:      写,不能读,只支持自增运算。

     3) 前向迭代器:      读写,     只支持自增运算。

     4) 双向迭代器:      读写:      自增,自减
     
     5) 随机访问迭代器:读写          完整的迭代器运算。


重新对容器元素排序的算法要使用< 操作符,重载版本带有一个额外的形参,表示对于元素排序的不同运算
     sort( beg, end);
     sort( beg, end, comp);

检查指定值的算法默认使用== 操作符。  这类算法的另外命名的版本,带有谓词函数形参,名字带有后缀_if
     find (beg ,end ,val);         // 找到第一个值为 val 的   
     find_if (beg ,end , pred);     //  找到第一个使pred 为 true 的元素


实现复制的算法版本:
     默认情况下,这些算法将重新排列的元素写回其输入范围, 可以使用_copy 版本 将元素写入指定的输出目标。
     EX: reverse( beg, end);
             reverse_copy( beg, end, dest);






[明道云] -基础教学1- 创建第一个工作表:从 0 到实用 明道云工作表相当于数据库表,是存储业务数据的核心组件。创建工作表主要有两种方式:1)从空白新建,通过添加字段(最多200个)、设置属性、配置表单样式;2)从Excel导入,需选择sheet、配置字段映射。创建后系统自动生成默认视图,支持多种视图形式(看板/日历等)。建议设置合适的标题字段和关联关系,初学者可在一小时内完成基础应用搭建。后续可扩展权限控制、工作流自动化等功能。 阅读详情

相关推荐

别再为环保数采仪通讯发愁!手把手教你用MCGS触摸屏+4G模块发送HJ212报文

本文详细介绍了如何使用MCGS触摸屏配合4G模块高效发送HJ212标准报文,解决工业环保监测中的数据采集与传输难题。从硬件连接到软件配置,再到报文组装与发送策略,提供全流程实用指南,特别针对4G网络环境下的特殊设置给出优化建议,帮助工程师提升数据传输稳定性与效率。

weixin_30847865的博客 389

C++ Primer札记(五)

 HTML Tags and JavaScript tutorialvar encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count1.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S)

219

类银河恶魔城游戏开发学习笔记(0)

解决B站搬运【Unity教程】从0编程制作类银河恶魔城游戏P37中moveState和idleState循环切换的问题

Gellar的博客 1447

c++调用gcd函数_C++ Primer 学习札记(5)——函数

C++ Primer 学习笔记(5)——函数1.函数的定义函数的调用请参看以下程序:#include using namespace std;//return the GCD(greater common divisor)int gcd(int v1, int v2){while(v2){int temp = v2;v2 = v1 % v2;v1 = temp;}return v1;}int ma...

weixin_27875131的博客 1051

用Multisim仿真一个9V供电的双工对讲机:从电桥原理到LM1875功放调试全记录

本文详细介绍了使用Multisim仿真9V供电的双工对讲机全过程,涵盖电桥原理、NE5532前置放大设计、LM1875功放调试及双工通信实现。通过实战案例解析,帮助读者掌握模拟电路设计与调试技巧,提升电子工程实践能力。

weixin_28678831的博客 115

Frida提取Cocos游戏XXTEA密钥的实战方法论

XXTEA是一种轻量级分组加密算法,广泛用于移动端游戏通信保护;其128位密钥的安全性直接决定网络协议逆向成败。在Cocos引擎生态中,密钥常以静态常量、JNI动态传递或Native运行时派生三种形态存在,导致传统静态分析失效。Frida凭借跨Java/Native注入能力与内存实时观测优势,成为捕获密钥‘出生瞬间’的关键工具——尤其适用于hook xxtea_encrypt函数入口、监控JNI参数传递、设置内存断点追踪派生过程等场景。本文聚焦Cocos2d-x与Cocos Creator项目,覆盖从密钥识

weixin_33509600的博客 416

[转]C++学习小结 - 学习札记 - C++博客

导读:   关注此博客已经很久了,但是由于校园网的原因,导致无法快速访问,所以一直用抓虾在看,但是觉得还是有必要申请一个。我发现此博客上的技术性都很强,很值得学习。废话少说了,既然申请了此博客,全当c++学习的一个新的台阶吧。   此前,自己学习C++书看了不少。《C++ Primer Plus》 5th (当时以为是《C++ Primer》)是自己看的第一本C++的书籍,此书看得我头昏眼

674

知识图谱:综述

第一种理解:知识图谱本质上是语义网络。本体论是语义网络中最重要的一个要素。第二种理解:知识图谱也叫做多关系图,由多种类型的节点和多种类型的边组成。课程以第二种理解为主。

u013250861的博客 479

二章 札记 --C++ primer 之旅

实习告一段落,翻开C++primer 准备苦逼的重温C++ 。以下是一些 从书上抄下来的笔记。 测试: -10u 是什么类型? -10u 类型是unsigned int  使用 typeid(-10u).name() 测试的 变量的初始化: 1、复制初始化: int ival=1024; 2、直接初始化: int ival(1024); 直接初始化语法更灵活且效率更高。

lsff Code World 817

Lammps纳米压痕接触面积—Matlab接触面积计算(两种方法)

Lammps纳米压痕接触面积计算

Rockyoung 5448

功能安全实战系列12-英飞凌TC3xx锁步核及其自检开发

本文介绍了英飞凌Tricore系列芯片的锁步核(Lockstep Core)功能及其故障注入自检机制。锁步核通过主核和检查核同步执行指令,并比较输出结果来检测硬件故障。文章详细阐述了锁步核的工作原理、使能配置方法以及故障注入自检的实现过程。故障注入测试通过专用寄存器LCLTEST触发,系统会定期自动测试比较器节点,验证锁步核的故障检测能力。当检测到异常时,会触发SMU模块的警报机制。该技术为汽车电子系统提供了重要的功能安全保障。

initiallizer的博客 920

【C++ Primer 学习札记】初始化和赋值

参考博客:【初始化(C++primer5th学习笔记)】https://blog.youkuaiyun.com/blubluhao/article/details/53436387 《C++ Primer》P39 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。 1、默认初始化 (1)对于内置类型(int),定义在任何函数之外的变量...

LeonJin的博客 307

单细胞数据分析(三):单细胞聚类分析

本文介绍了单细胞聚类分析的基本概念及其在单细胞RNA测序(scRNA-seq)数据中的应用。单细胞聚类分析通过将具有相似基因表达模式的细胞分组到不同的簇中,帮助识别细胞类型、状态和功能。文章详细展示了使用R语言中的Seurat包进行单细胞数据聚类分析的步骤,包括数据加载、降维、聚类和结果可视化。通过FindNeighbors和FindClusters函数,文章展示了如何基于降维数据进行细胞聚类,并选择合适的分辨率值。

专注生信领域 1906

C++ Primer 札记(一)

左值就是址值,右值就是数据值。 占位符 int (*matrix)[10] 注意*matrix 周围的括号是必需的因为下标操作符的优先级较高下列声明 int *matrix[ 10 ]; 将matrix 声明成一个含有10 个指向int 的指针的数组 建议把inline 函数的定义放到头文件中 链接指示符extern "C" 引用必须被初始化为指向一个对象一旦初始化了它就不能再 指向其...

MissLong的专栏 314

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

八章 札记--C++ primer 之旅

IO 对象 不可复制或赋值 形参或返回类型不能是流类型,可以通过传递或返回指向该对象的指针或引用 来传递和返回IO 对象。 所有流对象都包含一个条件状态成员,类型为iostate 类型 流的状态由 bad , fail ,eof 和 good 操作解释,如果 bad,fail 或者 eof 任意一个为 true ,则检查流本身将显示该流处于错误状态。反之,如果三个

lsff Code World 564

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

七章 札记--C++ primer 之旅

const 形参:      如果将函数形参定义为非引用的const类型,EX: void fcn(const int i) {};  则不能修改实参的局部副本。   注意:  void fcn(const int i) {}; 和  void fcn(int i) {}; 编译的结果是一样的。 规则: 如果使用引用实参的唯一目的是避免复制实参,则应该将实参定义为const 引用

lsff Code World 752

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

十章 札记--C++ primer 之旅

两个基本的关联容器:      map:            关联数组, 元素通过键来存储和读取      set:              集合,       multimap:     同一个键可多次出现的map      multiset:       同一个键可多次出现的set pair类型 : 头文件  utility  map 类型: 头文件 m

lsff Code World 503

四章 札记--C++ primer 之旅

数组的类型 不能是引用。即不存在引用的数组。 数组:         char s[]="C++";   等价于  char s2[]={'c','+','+','\0'};                     数组下标的正确类型是 size_t; 指针:       理解指针声明语句时,从右往左阅读。      EX :string *pstring

lsff Code World 476

九章 札记--C++ primer 之旅

进入容器的学习了。 顺序容器: vector      快速随机访问            list           快速插入/删除 deque       双端队列 顺序容器适配器:(适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型)           stack                queue

lsff Code World 518

C++ Primer 学习札记(二)

XanaduV的专栏 448

C++ Primer 学习札记(一)

XanaduV的专栏 373

【C++ Primer 学习札记】顶层const和底层const

《C++ Primer》P53 因为const对象一旦创建后其值就不能再改变,所以const对象必须初始化。 《C++ Primer》P57 对于指针来说, 用名词顶层const(top-level const)表示指针本身是个常量,而用名词底层const(low-level const)表示指针所指的对象是一个常量。 更一般的, 顶层const可以表示任意的对象是常量,这一点对...

LeonJin的博客 227

五六章 札记--C++ primer 之旅

赋值表达式的值是左操作数的值,其结果的类型为左操作数的类型。 赋值操作具有右结合性 。  EX: int ival,jval;  ival=jval=0; 建议: 只有在必要是才使用后置操作符。++;  --             前置操作不用保存原来操作数的未修改值,操作更少。 *iter++  等价于 *(iter++) :  后自增操作的优先级高于解引用操作

lsff Code World 488

C++ primer 札记

派生类基类赋值规则 智能指针,句柄类与iterator——copy control 左值与右值   数据分配区域的思考:堆or栈 Q1:分配成功与否的检查(长度与assert),异常机制应用 Q2:及时回收内存空间(重载析构函数。。。),指针=NULL,防止悬垂指针的出现导致Q1无法抛出异常(注意int p=0) Q3:系统分配与coder分配   函数|方法:(typedef函

real9593的专栏 396

C++ Primer 学习札记(三)

XanaduV的专栏 428

C++ Primer 学习札记(二)续

XanaduV的专栏 470
上一篇: 十章 札记--C++ primer 之旅
下一篇: 十二章 札记--C++ primer 之旅
lsff01
博客等级 码龄14年 4粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值