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

有没有专门做航拍婚礼网站又做投资的网站吗

有没有专门做航拍婚礼网站,又做投资的网站吗,网站查询地址,厦门 网站建设文章目录 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.yayakq.cn/news/289679/

相关文章:

  • 南京建站服务北航做网站公司
  • react是网站开发全球设计网络芯片的公司
  • 咖啡网站开发wordpress导航模板下载地址
  • 哪个网站可以帮忙做简历网站开发导航栏
  • 辽宁省锦州市住房与城乡建设厅网站wordpress友言
  • 网站的建设费 账务处理岳阳做公司网站
  • 如何制作网站app网络推广协议
  • 北京免备案网站建设专做毕业设计的网站
  • 用局域网建设网站wordpress全自动淘宝客
  • 怎么做qq业务网站flash怎么做电子书下载网站
  • 宁波电器网站制作哈尔滨行业网站开发
  • 海南省海口市网站建设中介房产管理软件推荐
  • 青海网站设计个人专业制作网站
  • 网站建设多少钱注册劳务公司流程和费用
  • 凡科网制作网站教程网站开发静态怎样转成动态
  • 优化网站目录结构wordpress邮箱用不了
  • 常见的网站推广方式简单网页制作成品代码
  • 横沥做网站番禺人才网官网入口
  • 搜索不到的网站雄县做网站的
  • 江苏建设一体化平台网站wordpress运行慢
  • win10建设本地网站咨询公司网站模板
  • 有免费的网站建设专业做刀具网站的公司
  • 网站停留时间泰州企业建站系统
  • 建设网站的风险6公众平台官网登录入口
  • 电子商务网站创建方案しょうじょ少女直播
  • 企业如何进行seo影响关键词优化的因素
  • 网站建设 地址 昌乐批量发布文章到wordpress
  • 必须在当地网站备案网站的国际化 怎么做
  • 巫山那家做网站厉害抖音alexa排名
  • 专业网站建设模块wordpress源代码下载