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

天津网站优化公司电话wordpress加速优化服务器

天津网站优化公司电话,wordpress加速优化服务器,做笔记网站,站建设培训学校迭代器 迭代器类似于指针类型#xff0c;也提供了对对象的间接访问。 就迭代器而言#xff0c;其对象是容器中的元素或 string 对象中的字符。 获取迭代器 容器的迭代器类型 使用作用域运算符来说明我们希望使用的类型成员#xff1b;例#xff1a;string::iterator it…迭代器 迭代器类似于指针类型也提供了对对象的间接访问。 就迭代器而言其对象是容器中的元素或 string 对象中的字符。 获取迭代器 容器的迭代器类型 使用作用域运算符来说明我们希望使用的类型成员例string::iterator iter; 类型别名功能iterator此容器类型的迭代器const_iterator可以读取元素但不能修改元素的迭代器类型diffreence_type带符号整数类型足够保存两个迭代器之间的距离reverse_iterator按逆序寻址元素的迭代器const_reverse_iterator不允许修改元素的逆迭代器 begin 和 end 成员 和指针不同的是获取迭代器不适用取地址运算符有迭代器的类型同时拥有返回迭代器 的成员函数。 成员函数 begin 生成指向容器中的第一个元素的迭代器。 成员函数 end 生成指向容器中的尾元素之后位置的迭代器简称尾后迭代器。 /*获取迭代器使用 auto 推断迭代器的类型*/string str{ Hello World };auto iter_b str.begin(); auto iter_e str.end();begin 和 end 有多个版本带 r 的版本返回反向迭代器以 c 开头的版本则返回 const 迭代器。 可以将一个普通的 iterator 转换为对应的 const_iterator但反之不行。 以 c 开头的版本是C新标准引入的用以支持 auto 与 begin 和 end 函数结合使用。 迭代器运算 解引用 可以通过解引用迭代器来获取它所指向的元素。 string str{ Hello World };auto iter str.begin();cout *iter endl; //输出 H 试图解引用一个非法的迭代器或者尾后迭代器结果都是未定义的。 算数运算 迭代器加上或减去整数 迭代器加上或减去一个整数值扔得一个迭代器迭代器指示的新位置与原来相比向前移动了若干个元素。 string str{ Hello World };auto iter str.begin();iter iter 4;cout *iter endl; // 输出 ocout *(iter - 3) endl; // 输出 e迭代器支持加法或减法的复合赋值语句 string str{ Hello World };auto iter str.begin();iter 4;cout *iter endl; // 输出 oiter - 3;cout *iter endl; // 输出 e迭代器支持递增或递减运算符表示迭代器指向下一个元素。 string str{ Hello World };auto iter str.begin();/* 将迭代器向前移动一个元素,然后输出移动后的值 */ cout *iter endl; // 输出 e/* 将迭代器向后移动一个元素,然后输出移动后的值 */ cout *--iter endl; // 输出 H两个迭代器可以相减 如果两个迭代器指向同一个容器则两个迭代器相减的结果是它们之间的距离。 string str{ Hello World };auto iter str.begin();auto iter_b iter 1;auto iter_e iter 4;cout (iter_e - iter_b) endl; //输出 3两个迭代器可以比较 如果两个迭代器指向同一个容器则可以进行比较指向前面元素的迭代器小于指向后面元素的迭代器。 string str{ Hello World };auto iter str.begin();auto iter_b iter 1;auto iter_e iter 4;cout (iter_b iter_e) endl; //输出 1如果两个迭代器相等则两个迭代器指向同一个元素或者它们是同一个容器的尾后迭代器。 使用迭代器遍历容器 string str{ Hello World };auto it_c str.cbegin();for (auto iter str.begin(); iter it_c str.size(); iter 1){cout *iter;}迭代器范围 一个迭代器范围iterator range由一对迭代器表示两个迭代器分别指向同一个容器中的元素或者尾元素之后的位置one past the last element。 迭代器范围也被称为左闭合区间left-inclusive interval其标准数学描述为[begin end) 标准库使用左闭合范围是因为这种范围有三种方便的性质。 假定 begin 和 end 构成一个合法的迭代器范围则 如果 begin 和 end 相等则范围为空。如果 begin 和end 不相等则范围至少包含一个元素且 begin 指向该范围中的第一个元素。我们可以对 begin 递增若干次使得begin end。 使用迭代器遍历容器 string str{ Hello World };auto iter str.begin();while ( iter ! str.cend() ){cout *iter;}再探迭代器 除了为每个容器定义的迭代器之外标准库在头文件iterator中还定义额外几种迭代器。这些迭代器包括以下几种 插入迭代器insert iterator这些迭代器被绑定到一个容器上可用来向容器插入元素。流迭代器stream iterator这些迭代器被绑定到输入或输出流上可用来遍历所关联的IO流。反向迭代器reverse iterator这些迭代器向后而不是向前移动。除了 forward_list 之外的标准库容器都有反向迭代器。移动迭代器move iterator这些专用的迭代器不是拷贝其中的元素而是移动它们。 插入迭代器 插入迭代器是一种迭代器适配器它接受一个容器生成一个迭代器能实现向给定容器添加元素。当我们通过一个插入迭代器进行赋值时该迭代器调用容器操作来给定容器的指定位置插入一个元素。 插入迭代器有三种类型差异在于元素插入的位置 back_inserter 创建一个使用 push_back 的迭代器。 deque char D{ F,G,H };auto it back_inserter(D);/*尾后插入字母 A B C D E */for (char i A; i F; i){*it i; //等价于 D.push_back( i );} /* 队列内的元素变为F G H A B C D E */front_inserter 创建一个使用 push_front 的迭代器。 deque char D{ F,G,H };auto it front_inserter(D);/*首前插入字母 A B C D E */for (char i A; i F; i){*it i; //等价于 D.push_front( i );} /* 队列内的元素变为E D C B A F G H */inserter 创建一个使用 insert 的迭代器。此函数接受第二个参数这个参数必须是一个指向给定容器的迭代器元素被插入到给定迭代器所表示的元素之前。 deque char D{ F,G,H };auto it inserter ( D ,D.begin() );for (char i A; i F; i){*it i; //等价于 it D.insert(it,i); it; 其中it D.begin();} /* 队列内的元素变为A B C D E F G H */iostream 迭代器 虽然 iostream 类型不是容器但标准库定义了可以用于这些 IO 类型对象的迭代器。 当创建一个流迭代器时必须指定迭代器将要读写的对象类型。 istream_iterator 读取输入流 deque char D;/*in_iter从输入流 cin 读取类型为 char 的值*/istream_iterator char in_iter( cin ); istream_iterator char eof; //尾后迭代器while (in_iter ! eof){D.push_back( *in_iter ); //返回从流中读取的值然后从流中读取下一个值}ostream_iterator 向一个输出流写数据 我们可以提供一个可选的第二参数它是一个字符串字面值在输出每个元素后都会打印此字符串。 deque char D{ A,B,C,D,E };ostream_iterator char out_iter (cout, );for (auto i : D)out_iter i; //等价于cout i ;反向迭代器 反向迭代器就是在容器中从尾元素反向移动的迭代器。 除了 forward_list 之外其它容器都支持反向迭代器。 成员函数 rbegin 返回指向容器尾元素的迭代器。 成员函数 rend 返回指向容器首元素之前位置的迭代器。 反向迭代器迭代器也有 const 版本即 crbegin 和 crend。 使用反向迭代器逆序遍历容器 deque char D{ A,B,C,D,E };auto it D.crbegin();while (it ! D.crend()){cout *it ;}泛型算法结构 任何算法的最基本的特征是它要求其迭代器提供哪些操作。 算法所要求的迭代器操作可以分为 5 个迭代器类别 迭代器类别特点输入迭代器只读不写单遍扫描只能递增输出迭代器只写不读单遍扫描只能递增前向迭代器可读写多遍扫描只能递增双向迭代器可读写多遍扫描可递增递减随机访问迭代器可读写多遍扫描支持全部迭代器运算
http://www.zqtcl.cn/news/103342/

相关文章:

  • 代码需求网站织梦怎么关闭网站
  • 浙江工信部网站备案查询东圃做网站
  • icp网站域名怎么填写官方网站建设银行年利息是多少钱
  • 沈阳做网站好的信息流优化师证书
  • 做招聘网站创业seo优化工作
  • 如何维护网站建设外卖网站建设价钱
  • 南宁保洁网站建设乌克兰服装网站建设
  • ppt链接网站怎么做的nas云存储做视频网站
  • 上海网站制作公司联系方式设计素材网站照片
  • 林州网站建设价格网络舆情是什么意思
  • 网站外链平台的建设方法平台类型(至少5个)?兰州道路建设情况网站
  • 网站建立健全举报工作机制设计电子商务网站主页
  • 广州市建设工程交易服务中心网站沈阳百度推广哪家好
  • 个人网站备案需要什么网站建立的重要性
  • wordpress用户名西安seo代理计费
  • 网站建设前准备工作手机上传视频网站开发
  • 海口网站建设是什么意思wordpress推广码
  • 杭州市住房和城乡建设厅网站海南网站建设设计
  • 网站建设平台一般多少钱wordpress 本地上传服务器
  • 怎么给网站命名男女做羞羞羞的网站
  • 北京响应式网站建设公司信息流推广方式
  • 一级a做爰片迅雷网站微分销系统定制开发
  • 山东网站建设工作室网页设计全部代码
  • 用c 做网站可以吗注册网站什么要求
  • 销售网站排名销售型网站模板
  • wordpress 汽车宁波seo整体优化
  • 网站建设公司在哪里宣传c2c旅游电子商务平台
  • 网站查看空间商网站不提交表单
  • 空间怎么上传网站企业所得税怎么算公式
  • 网站建设wix建筑公司网站设计思路