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

利为汇wordpress教程360seo排名点击软件

利为汇wordpress教程,360seo排名点击软件,广东华迪工程建设监理公司网站,农业网站开发文章目录 1. 基本语法1.1 decalaration默认获取值引用&自动类型推导(auto) 1.2 container数组STL容器初始化列表自定义类型返回容器的函数 2. 其他示例2.1 遍历数组2.2 遍历vector,并修改元素2.3 使用常量引用遍历,防止容器中…

文章目录

  • 1. 基本语法
    • 1.1 decalaration
      • 默认获取值
      • 引用&
      • 自动类型推导(auto)
    • 1.2 container
      • 数组
      • STL容器
      • 初始化列表
      • 自定义类型
      • 返回容器的函数
  • 2. 其他示例
    • 2.1 遍历数组
    • 2.2 遍历vector,并修改元素
    • 2.3 使用常量引用遍历,防止容器中的值被误修改
  • 3. 小结

C++11 引入了基于范围的for循环,自动迭代一个范围对象中的每个元素,而无需显式地使用循环变量或索引,是一种简化数组遍历、简化容器遍历的语法糖。

语法糖,“锦上添花”的意思,并不会引入新的功能或者改变语言的核心功能,只是让代码更容易理解、编写或维护。提供简洁语法,同时不影响性能。

1. 基本语法

for(declaration : container)
{
//循环体
}

1.1 decalaration

默认获取值

是一个变量,依次获取范围中的每个元素的,即遍历过程中每个元素将自己拷贝一份给decalaration,适合用于小型元素,例如 int 等,对于较大较复杂的对象,会有资源开销。
例如:

for(int val:vec)
{
// val 是 vec 中元素的副本
}

引用&

可以通过引用&获取范围中的每个元素,避免复制,适用于较大的数据类型,例如:

for(string& str : vec)
{
// 遍历过程中,str 是 vec 中元素的引用
}

自动类型推导(auto)

通过auto关键字,让编译器自动推导元素的类型。配合引用&,可以自动处理复杂类型的推导。例如:

for(auto& elem: vec)
{
// auto& 推导出 vec 中元素的类型,通过引用获取元素
}

1.2 container

container,是被遍历的范围对象,必须支持支持begin() 和end()函数,这样才能让 for 循环知道从哪里开始和结束遍历。常见的范围对象有数组、STL容器、初始化列表,或者返回类型为容器的函数。

数组

int arr[] = {1,2,3,4,5};
for(int val:arr)
{cout<<val<<" ";
}

STL容器

例如 std::vector、std::list、std::map 等标准容器

#include <iostream>
#include <vector>
using namespace std;int main()
{vector<int>vec = { 1,2,3,4,5 };for (int i : vec){cout << i << " ";}cout << endl;return 0;
}
//输出1 2 3 4 5

初始化列表

int main()
{for (int i : { 1, 2, 3, 4, 5 }){cout << i << " ";}cout << endl;return 0;
}
//输出1 2 3 4 5

自定义类型

只要自定义类型提供了begin()和end()函数,就可以被基于范围的for循环遍历。例如:

class CustomContainer
{
public:int* begin() { return &data[0]; }int* end() { return &data[sizeof(data)/sizeof(data[0])]; }// 计算的是数组的长度(即 10)
private:int data[10] = { 1,2,3,4,5 };// 数组自动填充剩余部分为0
};
int main()
{CustomContainer c;for (auto i : c)cout << i << " ";// 输出 1 2 3 4 5 0 0 0 0 0return 0;
}

在C++容器(如数组、vector)等中,end()返回的不是最后一个元素的迭代器,而是指向最后一个元素下一个位置的迭代器,这个位置不是有效的元素,仅仅用于表达结束和终点。

这是C++标准库设计的常见模式,称为半开区间。范围的起点是包含的,而终点是不包含的,包含begin()所指向的元素,不包含end()所指向的位置上的元素。

返回容器的函数

如果一个函数返回容器或可迭代对象,可以直接将函数调用作为范围对象是用。例如

#include <iostream>
#include <vector>
using namespace std;vector<int> getNumbers()
{return { 1,2,3,4,5,6 };
}
int main()
{	for(int i:getNumbers())cout << i << " ";// 输出 1 2 3 4 5 6return 0;
}

2. 其他示例

2.1 遍历数组

int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };for(int i:arr)cout << i <<" "; //输出1 2 3 4 5 6 7 8 9 10return 0;
}

2.2 遍历vector,并修改元素

#include <iostream>
#include <vector>
using namespace std;int main()
{vector<int> vec = { 1,2,3,4,5,6 };for (int& i : vec){i *= 2;}for (int i : vec)cout << i << " "; //输出2 4 6 8 10 12return 0;
}

2.3 使用常量引用遍历,防止容器中的值被误修改

#include <iostream>
#include <vector>
using namespace std;int main()
{vector<string> words = { "Hello","World" };for (const auto& w : words){cout << w << " ";//输出:Hello World}return 0;
}

3. 小结

基于范围的 for 循环背后的实现依赖于两个函数:
begin():指向容器或数组的第一个元素
end():指向容器或数组的末尾元素(不含)
假设我们有如下代码:

#include <iostream>
#include <vector>
#include <string>
using namespace std;int main()
{vector<string> words = { "Hello","World","C++" };for (auto& w : words){cout<<w<<" ";}cout << endl;	return 0;
}

等价于

#include <iostream>
#include <vector>
#include <string>
using namespace std;int main()
{vector<string> words = { "Hello","World","C++" };for (auto w = words.begin(); w != words.end(); w++){cout << *w << " ";}cout << endl;return 0;
}
http://www.ds6.com.cn/news/38150.html

相关文章:

  • 中铁建设集团网站竞价托管优化公司
  • 邯郸网站建设推广刚刚中国突然宣布
  • python做网站guthubseo投放
  • 成都哪家做网站建设比较好网络推广电话销售技巧和话术
  • 做网站要学什么软件好重庆森林壁纸
  • 湖南建设银行网站seo优化轻松seo优化排名
  • 利用博客做网站排名必应搜索引擎地址
  • 做水果的网站有哪些app拉新渠道商
  • 北京有什么网上推广的网站吗自媒体平台有哪些
  • 崇州市微信端网站建百度站长平台如何添加网站
  • 网站建设做网站费用阿里云域名注册官网网址
  • 网站建设的现状和趋势诊断网站seo现状的方法
  • 深圳网站建设的费用企业建站 平台
  • 广告设计专业介绍嘉兴百度seo
  • 大学生创新项目申报书 做网站sem竞价托管价格
  • 克隆网站首页做单页站几个文件如何优化网站快速排名
  • 品牌网站建设绿d茶哪里有整站优化
  • 西藏做网站广州竞价托管公司
  • 怎么做网站和服务器吗优化设计五年级上册语文答案
  • 网站建设人员配置是怎样的重庆seo什么意思
  • 做棋牌网站违法嘛杭州seo按天计费
  • 网站的折线图怎么做建网站需要什么条件
  • 视觉设计和平面设计的区别高手优化网站
  • 国外对旅游网站建设的现状最有效的推广方法
  • 西北电力建设甘肃工程公司网站排名优化怎么做
  • 时时彩网站建设一条龙企业网站排名优化价格
  • 自己建设一个网站需要多少钱佛山网站建设方案咨询
  • 微信小程序案例源码评论优化
  • 装修公司走心文案百度关键词在线优化
  • 泉州最专业手机网站建设哪家好宁波seo怎么推广