C++11新增for循环遍历方法

记录C++11新增for循环遍历方法

1.基于迭代器的for循环:

for_each位于std命名空间下,我们可以看到其定义如下:

inline _Fn1 for_each(_InIt _First, _InIt _Last, _Fn1 _Func)

{ // perform function for each element
_DEBUG_RANGE(_First, _Last);
_DEBUG_POINTER(_Func);
_For_each(_Unchecked(_First), _Unchecked(_Last), _Func);

return (_STD move(_Func));
}

由上可见其需要三个参数,第一第二表示范围,第三表示一个函数

下边上使用方法:

void add1(int& num)
{
num += 1;
}
void print(const int& num)
{
std::cout << num << std::endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
     int arr[5] = { 1, 2, 3, 4, 5 };
     std::for_each(arr,arr+5,add1);  //区间为前开后闭,此区间元素将会被用作第三个函数的参数去调用
     std::for_each(arr,arr+5,print);  //print 2,3,4,5,6
     return 0;
}

2.基于范围的for循环:

这个比较简单直接上使用方法

使用基于范围的for循环去替换基于迭代器的for循环(for_each)

void main()

{

int arr[5] = {1,2,3,4,5};

for(int & num:arr)

{

num = num + 1;
   }

for (int num:arr)

{

std::cout<<num<<std::endl;
   }
}

此输出和第一个测试效果完全一样

时间: 2024-10-12 15:54:00

C++11新增for循环遍历方法的相关文章

JavaScript 中的12种循环遍历方法

题目:请介绍 JavaScript 中有哪些循环和遍历的方法,说说它们的应用场景和优缺点? 1.for 循环 let arr = [1,2,3];for (let i=0; i<arr.length; i++){ console.log(i,arr[i])}// 0 1// 1 2// 2 3 for 循环是 Js 中最常用的一个循环工具,经常用于数组的循环遍历. 2.for in 循环 let obj = {name:'zhou',age:'**'}for(let i in obj){ con

JS数组与对象的遍历方法大全

本文简单解析各种数组和对象属性的遍历方法: 原生for循环.for-in及forEach ES6 for-of方法遍历类数组集合 Object.key()返回键名的集合 jQuery的$.each() underscore的_.each() 文中的范例基于以下数组和对象. ? 1 2 3 4 5 6 7 8 var arrTmp = ["value1","value2","value3"]; var objTmp = {     aa:"

总结几种循环遍历

1.最常用的 for循环 for(i= 0; i < arr.length; i++) { expression }  简单,可以优化 =>for(i=0,len=arr.length;i<len;i++){expression} 优化的方法:使用临时变量,将长度缓存起来,避免重复获取数组长度:当数组较大时优化效果才会比较明显,这种方法是所有循环遍历方法中性能最高的一种. 2.foreach循环遍历arr.forEach(function(value,index,array){expre

List集合的遍历方法

估计你永远都不会忘记这三个方法了...... public static void main(String[] args) { //超级for循环遍历方法 List<String> list = new LinkedList<String>(); list.add("asd"); list.add("asd"); list.add("asd"); list.add("asd"); for (String

Map的五种遍历方法

package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set; //循环遍历map的方法public class CircleMap { public static void main(String[] args) {  Ma

javascript中常见的几种循环遍历

项目开发中,不管是建立在哪个框架基础上,对数据的处理都是必须的,而处理数据离不开各种遍历循环.javascript中循环遍历有很多种方式,记录下几种常见的js循环遍历. 一.for循环 for循环应该是最普遍的,使用最多的一种循环遍历方法了,所以也导致其可读性和易维护性比较差,但是它可以及时break出循环. let arr = [1,2,3,4,5,6,7] for(let i = 0;i<arr.length;i++){ console.log(arr[i]) } // 1,2,3,4,5,

写好循环也不容易--8种遍历方法执行速度深度&#176;对比

关于数组或对象遍历,相信很多人都没有深入观察过执行效率.这是一个曾在群里吵翻天的话题,读懂后你将成为遍历效率话题的大师. 导读 遍历数组或对象是一名程序员的基本素养之一. 然而遍历却不是一件简单的事, 优秀的程序员知道怎么去选择合适的遍历方法, 优化遍历效率. 本篇将带你走进JavaScript遍历的世界, 享受分析JS循环的快感. 本篇所有代码都可以直接运行, 希望您通读本篇后, 不止是浏览, 最好是亲手去实践下. 概述 js有如下两种数据需要经常遍历 数组(Array) 对象(Object)

Effective JavaScript Item 50 优先使用遍历方法而非循环

优先使用遍历方法而非循环 在使用循环的时候,很容易违反DRY(Don't Repeat Yourself)原则.这是因为我们通常会选择复制粘贴的方法来避免手写一段段的循环语句.但是这样做回让代码中出现大量重复代码,开发人员也在没有意义地"重复造轮子".更重要的是,在复制粘贴的时候很容易忽视循环中的那些细节,比如起始索引值,终止判断条件等. 比如以下的for循环就存在这个问题,假设n是集合对象的长度: for (var i = 0; i <= n; i++) { ... } //

Python的list循环遍历中,删除数据的正确方法

在遍历list,删除符合条件的数据时,总是报异常,代码如下: 1 num_list = [1, 2, 3, 4, 5] 2 print(num_list) 3 4 for i in range(len(num_list)): 5 if num_list[i] == 2: 6 num_list.pop(i) 7 else: 8 print(num_list[i]) 9 10 print(num_list) 会报异常:IndexError: list index out of range 原因是在删