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

泉州专业建站福州房地产网站建设

泉州专业建站,福州房地产网站建设,北京市工程建设交易中心,美食介绍网站建设论文C 基于范围的for循环1 使用样例2 使用条件3 完善措施 Thanks♪(・ω・)ノ谢谢阅读!下一篇文章见!!! 基于范围的for循环 1 使用样例 使用for循环遍历数组,我们通常这么写: …

C++

  • 基于范围的for循环
    • 1 使用样例
    • 2 使用条件
    • 3 完善措施
  • Thanks♪(・ω・)ノ谢谢阅读!
  • 下一篇文章见!!!

基于范围的for循环

1 使用样例

使用for循环遍历数组,我们通常这么写:

#include<iostream>using namespace std;int main() {int arr[] = {0, 1, 2, 3, 4, 5 };for(int i = 0;i < sizeof(arr) / sizeof(arr[0]);i++){cout << arr[i] << " ";}return 0;
}

在这里插入图片描述
上面的代码我们给出了for循环的范围,让他遍历整个数组,但是对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。
因此C++11中引入了基于范围的for循环。

for循环后的括号由冒号“ :”分为两部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围

#include<iostream>using namespace std;int main() {int array[] = {0, 1, 2, 3, 4, 5 };for (auto e : array)cout << e << " ";return 0;}

使用auto 避免考虑数据类型。

效果也很棒:
在这里插入图片描述
注意:与普通循环类似,可以用continue来结束本次循环,也可以用break来跳出整个循环

2 使用条件

  1. for循环迭代的范围必须是确定的
    对于数组而言,就是数组中第一个元素和最后一个元素的范围;对于类而言,应该提供
    begin和end的方法,begin和end就是for循环迭代的范围。
    注意:以下代码就有问题,因为for的范围不确定
    void TestFor(int array[])
    {//因为传入的参数是 数组首地址 无法判断 结束位置。for(auto& e : array)cout<< e <<endl;
    }	
    
  2. 迭代的对象要实现++和==的操作。(关于迭代器这个问题,我还没办法讲清楚,大家见谅)

3 完善措施

为了正确使用基于范围的for循环,需要一种方式来传递数组的大小信息到你的函数中。

有几种方法可以解决这个问题:

  1. 使用标准库容器

最推荐的方法是使用标准库中的容器,如 std::vector,因为这些类型携带大小信息并提供begin()和end()成员函数,正好适配基于范围的for循环

#include <iostream>
#include <vector>void TestFor(const std::vector<int>& arr) {for(auto& e : arr) {std::cout << e << std::endl;}
}int main() {std::vector<int> v = {1, 2, 3, 4, 5};TestFor(v);
}
  1. 使用模板确定数组大小

如果你必须使用数组,可以使用模板函数确定数组的大小:

#include <iostream>template<size_t N>
//给定数组大小
void TestFor(int (&array)[N]) {for(auto& e : array) {std::cout << e << std::endl;}
}int main() {int arr[] = {1, 2, 3, 4, 5};TestFor(arr);
}
  1. 明确传递数组大小

如果你不能改变函数签名(比如在一些老旧代码中),可以考虑直接传递数组的大小作为另一个参数:

#include <iostream>void TestFor(int* array, size_t size) {for(size_t i = 0; i < size; ++i) {std::cout << array[i] << std::endl;}
}int main() {int arr[] = {1, 2, 3, 4, 5};TestFor(arr, sizeof(arr)/sizeof(arr[0]));
}

这种方法虽然不利用了基于范围的for循环,但能处理数组丢失大小信息的问题。

std::vector或其他容器的使用是最推荐的方法,因为它们提供了更多的灵活性、安全性和功能。如果你的场景或现有代码限制了容器的使用,试试模板或明确传递数组大小的方案。

Thanks♪(・ω・)ノ谢谢阅读!

下一篇文章见!!!

http://www.yayakq.cn/news/113961/

相关文章:

  • 茌平网站建设电话企业网站建设应避免数据孤岛
  • 如何做强企业网站设计方案评价
  • 海南电子商务网站长春网站制作招聘信息
  • 响应式网站是什么意思深圳公司注册资金实缴要求
  • 做网站子页广告传媒建设网站
  • 建网站的详细技术如何构建成交型网站
  • 门户网站需要哪些人wordpress novelist
  • 弹幕网站制作台州集团网站建设
  • 网站设置访问频率怎么办东莞松山湖中学
  • 江苏省建设工程设计施工图审核中心网站做网站销售经常遇到的问题
  • 平坝网站建设网站推广外链怎么做
  • 平台设计网站公司电话号码企业营销型网站建设哪家公司好
  • 网站布局设计理由2016年做网站能赚钱吗
  • 有没有网站专门做cnc招聘慈溪seo排名
  • 肇庆住房建设部网站免费授权企业网站源码
  • 怎么搭建自己的网站卖货镇海建设交通局网站首页
  • 做网站被骗去哪投诉h5模板网站有哪些
  • 网站建设用户调查报告怎么注册商标品牌
  • 北京高端品牌网站定制学校如何建设网站首页
  • 百度站长工具对seo的帮助深圳4a广告公司有哪些
  • 在哪些网站做外贸好免费图片素材网站推荐
  • 网站首页的图片怎样做缓存行业资讯网站源码
  • 青岛网站建设兼职前端跟后端哪个就业难
  • 宁波建站平台扬州学做网站培训多少钱
  • html公司网站模板源码wordpress php 链接
  • 绞铜机 东莞网站建设免费包装设计在线生成
  • 公司网站建设申请报告企业网络优化
  • 教育培训网站深圳造价信息网官网
  • 莒县做网站的公司企业信用信息公示系统 上海
  • 国内建站平台有哪些一个备案可以做几个网站