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

如何做社交网站色彩搭配的网站

如何做社交网站,色彩搭配的网站,懒人图库,wordpress自定义分类目录使用迭代器遍历容器在遍历的过程中需要给出容器的两端#xff1a;开头#xff08;begin#xff09;和结尾#xff08;end#xff09;#xff0c;因为这种遍历方式不是基于范围来设计的。在基于范围的for循环中#xff0c;不需要再传递容器的两端#xff0c;循环会自动以…使用迭代器遍历容器在遍历的过程中需要给出容器的两端开头begin和结尾end因为这种遍历方式不是基于范围来设计的。在基于范围的for循环中不需要再传递容器的两端循环会自动以容器为范围展开并且循环中也屏蔽掉了迭代器的遍历细节直接抽取容器中的元素进行运算使用这种方式进行循环遍历会让编码和维护变得更加简便。 #include iostream #include vector using namespace std;int main(void) {vectorint t{ 1,2,3,4,5,6 };for (auto value : t){cout value ;}cout endl;return 0; } 在上面的例子中是将容器中遍历的当前元素拷贝到了声明的变量value中因此无法对容器中的元素进行写操作如果需要在遍历过程中修改元素的值需要使用引用。 #include iostream #include vector using namespace std;int main(void) {vectorint t{ 1,2,3,4,5,6 };cout 遍历修改之前的容器: ;for (auto value : t){cout value ;}cout endl 遍历修改之后的容器: ;for (auto value : t){cout value ;}cout endl;return 0; } 对容器的遍历过程中如果只是读数据不允许修改元素的值可以使用const定义保存元素数据的变量在定义的时候建议使用const auto 这样相对于const auto效率要更高一些。 #include iostream #include vector using namespace std;int main(void) {vectorint t{ 1,2,3,4,5,6 };for (const auto value : t){cout value ;}return 0; } 使用基于范围的for循环有一些需要注意的细节先来看一下对关系型容器map的遍历 #include iostream #include string #include map using namespace std;int main(void) {mapint, string m{{1, lucy},{2, lily},{3, tom}};// 基于范围的for循环方式for (auto it : m){cout id: it.first , name: it.second endl;}// 普通的for循环方式for (auto it m.begin(); it ! m.end(); it){cout id: it-first , name: it-second endl;}return 0; } 在上面的例子中使用两种方式对map进行了遍历通过对比有两点需要注意的事项 使用普通的for循环方式基于迭代器遍历关联性容器 auto自动推导出的是一个迭代器类型需要使用迭代器的方式取出元素中的键值对和指针的操作方法相同 it-first it-second 使用基于范围的for循环遍历关联性容器auto自动推导出的类型是容器中的value_type相当于一个对组std::pair对象提取键值对的方式如下 it.first it.second 通过对基于范围的for循环语法的介绍可以得知在for循环内部声明一个变量的引用就可以修改遍历的表达式中的元素的值但是这并不适用于所有的情况对应set容器来说内部元素都是只读的这是由容器的特性决定的因此在for循环中auto会被视为const auto 。 #include iostream #include set using namespace std;int main(void) {setint st{ 1,2,3,4,5,6 };for (auto item : st) {cout item endl; // error, 不能给常量赋值}return 0; } 除此之外在遍历关联型容器时也会出现同样的问题基于范围的for循环中虽然可以得到一个std::pair引用但是我们是不能修改里边的first值的也就是key值。 #include iostream #include string #include map using namespace std;int main(void) {mapint, string m{{1, lucy},{2, lily},{3, tom}};for (auto item : m){// item.first 是一个常量cout id: item.first , name: item.second endl; // error}return 0; } 基于范围的for循环遍历的对象可以是一个表达式或者容器/数组等。假设我们对一个容器进行遍历在遍历过程中for循环对这个容器的访问频率是一次还是多次呢我们通过下面的例子验证一下 #include iostream #include vector using namespace std;vectorint v{ 1,2,3,4,5,6 }; vectorint getRange() {cout get vector range... endl;return v; }int main(void) {for (auto val : getRange()){cout val ;}cout endl;return 0; } get vector range... 1 2 3 4 5 6 从上面的结果中可以看到不论基于范围的for循环迭代了多少次函数getRange()只在第一次迭代之前被调用得到这个容器对象之后就不会再去重新获取这个对象了。 结论对应基于范围的for循环来说冒号后边的表达式只会被执行一次。在得到遍历对象之后会先确定好迭代的范围基于这个范围直接进行遍历。如果是普通的for循环在每次迭代的时候都需要判断是否已经到了结束边界。
http://www.hkea.cn/news/14530508/

相关文章:

  • 上海网站建设网站优化app抖音代运营需要什么
  • 如何创建网站推广产品网络推广员一个月多少钱
  • 学做网站视频教程pc 移动端网站建设
  • 五个常见的电子商务网站网址小型门户网站模板
  • 湖南省新化县建设局网站linux wordpress 中文字体
  • 响应式网站怎么做pc端的flash 网站引导页
  • 长兴网站制作公司网站建设价格是多少
  • 尤溪住房和城乡建设局网站东莞电子网站建设
  • 网站游戏网站怎么做wordpress精简版
  • 网站建设公司郴州wordpress外网ip访问
  • 深圳做app网站制作厦门管网建设公司
  • 网站做一样的算侵权么怎么向国外打广告
  • 谢岗做网站洛阳网上房地产
  • 网站建设开票分类编码国内高端大气的网站设计
  • 福永三合一网站设计网站关键词推广哪家好
  • qqip.探测网站建设做外贸网站需要多少钱
  • 做网站都要学什么深圳财务小公司网站
  • 注册网站邮箱发送的验证网页无法打开深圳做网站比较好的公司有哪些
  • 长沙网站优化步骤百度答主招募入口官网
  • 做网站跟赚钱嘛建行信用卡中心官网
  • 外贸网站推荐登封搜索引擎优化
  • vue cdn做的网站平台开发的基本流程
  • 企业建设官方网站的目的企业网站建设选题依据
  • 华硕建设公司网站网站建设 2018
  • php网站api接口写法怎么做自己的推广网站
  • 有哪些网站可以做笔译免费搭建网站哪个好
  • 北京做网站哪家公司最好广州最富裕的三个区
  • 企业网站建设合同范本怎样让百度搜索到自己的网站
  • 住房和城市建设部网站从零开始制作wordpress主题
  • 洛阳网站建设培训注册域名怎么做网站