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

重庆工厂网站建设代写文章质量高的平台

重庆工厂网站建设,代写文章质量高的平台,wordpress rss去掉,wordpress 文章 置顶STL迭代器的应用 迭代器的定义方法: 类型作用定义方式正向迭代器正序遍历STL容器容器类名::iterator 迭代器名常量正向迭代器以只读方式正序遍历STL容器容器类名::const_iterator 迭代器名反向迭代器逆序遍历STL容器容器类名::reverse_iterator 迭代器名常量反向迭…

STL迭代器的应用

STL迭代器分类

  • 迭代器的定义方法:
类型作用定义方式
正向迭代器正序遍历STL容器容器类名::iterator 迭代器名
常量正向迭代器以只读方式正序遍历STL容器容器类名::const_iterator 迭代器名
反向迭代器逆序遍历STL容器容器类名::reverse_iterator 迭代器名
常量反向迭代器以只读方式逆序遍历STL容器容器类名::const_reverse_iterator 迭代器名
  • 迭代器与自动类型推导:C++11引入了auto关键字,用于自动类型推导,可简化记忆复杂的数据类型名,自动类型推导要求变量必须进行初始化。语法为auto 变量名=值

  • 迭代器本身不支持输入和输出,因此不能像指针一样输出查看其地址。

  • 在对迭代器所指向的元素进行操作时,必须像指针一样,对迭代器进行解引用操作,即*迭代器名。若对迭代器指向的元素进行修改,则与指针一样,其实际的值也会被修改。

  • 特殊位置的迭代器:

    • 类名.begin():正向迭代器,指向容器正向上首个位置的迭代器
      类名.cbegin():常量正向迭代器,其余与begin相同
    • 类名.end():正向迭代器,指向容器正向上末个位置的下一个位置的迭代器
      类名.cend():常量正向迭代器,其余与end相同
    • 类名.rbegin():反向迭代器,指向容器反向上首个位置的迭代器
      类名.crbegin():常量反向迭代器,其余与rbegin相同
    • 类名.rend():反向迭代器,指向容器反向上末个位置的下一个位置的迭代器
      类名.crend():常量反向迭代器,其余与rend相同
      STL特殊位置迭代器
  • 迭代器与指针一样,支持算数运算。迭代器的算数运算具有方向性:在进行算数运算时,运算方向沿着迭代器的方向。
    如正向迭代器进行++时,为沿着正向进行++,即移动到当前迭代器的下一个位置;反向迭代器进行++时,为沿着反向进行++,相对于正向而言,实际是移动到了当前的前一个位置。
    迭代器运算方向

  • 获取迭代器的位置:使用std::distance(迭代器1,迭代器2),为迭代器2-迭代器1。

  • 基于范围的for循环:C++11引入了基于范围的for循环,用于更简便的正序遍历容器(包括C数组),但不支持逆序遍历容器。在基于范围的for循环中,循环变量就是元素本身,无需再进行解引用操作。若需要在基于范围的for循环中对元素进行修改,可与引用进行配合使用。循环头的语法为:

    for (auto element : container) {//element直接表示容器中的每一个元素,无需再进行解引用。container既可以为STL序列容器,也可以是C数组
    }
    for (auto &element : container) {//element表示容器中的每一个元素的引用,通过修改引用可直接修改容器内元素
    }
    

迭代器应用实例

此处仅为说明迭代器作用而举例,实际上vector的I/O方法并不止这些。

一维vector的正序输入、正序输出

  • 手动定义迭代器
vector<int>v(10);
for(v::iterator i=v.begin();i!=v.end();i++)cin>>*i;//注意必须解引用迭代器,否则会报错。对迭代器指向的元素进行操作,元素实际值会改变
for(v::iterator i=v.begin();i!=v.end();i++) cout<<*i;
  • 自动类型推导定义的迭代器
vector<int>v(10);
for(auto i=v.begin();i!=v.end();i++) cin>>*i;
for(auto i=v.begin();i!=v.end();i++) cout<<*i;
  • 基于范围的for循环
vector<int>v(10);
for(auto &i:v){cin>>i;
}
for(auto i:v){cout<<i;
}
  • 基于范围的for循环(C数组)
int a[10];
for(auto &i:a){cin>>i;
}
for(auto i:a){cout<<i;
}

一维vector的逆序输入、逆序输出

  • 手动定义迭代器
vector<int>v(10);
for(v::iterator i=v.rbegin();i!=v.rend();i++)cin>>*i;//注意必须解引用迭代器,否则会报错。对迭代器指向的元素进行操作,元素实际值会改变
for(v::iterator i=v.rbegin();i!=v.rend();i++) cout<<*i;
  • 自动类型推导定义的迭代器
vector<int>v(10);
for(auto i=v.rbegin();i!=v.rend();i++) cin>>*i;
for(auto i=v.rbegin();i!=v.rend();i++) cout<<*i;

二维vector的正序输入、正序输出

  • 手动定义迭代器
vector<vector<int>>v(3,vector<int>(3));
for(vector<vector<int>>::iterator j=v.begin();j!=v.end();j++)for(vector<int>::iterator i=j->begin();i!=j->end();i++)cin>>*i;
for(vector<vector<int>>::iterator j=v.begin();j!=v.end();j++)for(vector<int>::iterator i=j->begin();i!=j->end();i++)cout<<*i;
  • 自动类型推导的迭代器
vector<vector<int>>v(3,vector<int>(3));
for(auto j=v.begin();j!=v.end();j++)for(auto i=j->begin();i!=j->end();i++)cin>>*i;
vector<vector<int>>v(3,vector<int>(3));
for(auto j=v.begin();j!=v.end();j++)for(auto i=j->begin();i!=j->end();i++)cout<<*i;
  • 基于范围的for循环
vector<vector<int>>v(3,vector<int>(3));
for(auto &j:v)for(auto &i:j)cin>>i;
for(auto j:v)for(auto i:v)cout<<i;
  • 基于范围的for循环(C数组)
int a[3][3];
for(auto &j:a)for(auto &i:j)cin>>i;
for(auto &j:a)for(auto i:j)cout<<i;
http://www.hkea.cn/news/612855/

相关文章:

  • 临朐县网站建设利用搜索引擎营销成功的案例
  • 利用网盘做视频网站镇江优化推广
  • 视频微网站开发哪个公司网站设计好
  • 品网站建设智能搜索引擎
  • 怎样在百度建网站seo建设者
  • 四海网络网站建设咨询什么叫做网络营销
  • 安徽建设网官方网站优化分析
  • 网站根目录文件名游戏推广员是做什么的
  • 个体工商户怎么做网站西安网站seo技术
  • 报名网站制作2345网址导航官网下载安装
  • 图书购物网站开发总结百度发广告需要多少钱
  • 做网站 业务流程图站长统计性宝app
  • 长沙做网站大概多少钱万网域名注册教程
  • 成都网站建设网站产品推广计划书怎么写
  • 深圳个人网站建设大连网络推广公司哪家好
  • 建设工程教育appseo技术培训中心
  • 家教中介怎么利用网站来做的免费广告推广
  • wordpress仿制建设seo是什么平台
  • 商城网站建设分为几块seo臻系统
  • 网络营销对于个人而言有什么作用seo文章
  • 做书籍封皮的网站今日中国新闻
  • 东莞建设网站电工培训技术学校
  • 深圳聘请做网站人员成都排名seo公司
  • 网站备案之后东莞网站关键词优化公司
  • 多种专业网站建设潍坊网站排名提升
  • 网站投稿系统怎么做网站制作流程是什么
  • 交警网站建设整改百度推广怎么推广
  • 重庆网站建设哪里比较好呢网站下载
  • 网站运行速度慢的原因看b站二十四小时直播间
  • 电商网站开发服务全网营销骗局揭秘