for_each 源码剖析

一:用法解析
函数原型:

template <class InputIterator, class Function>
   Function for_each (InputIterator first, InputIterator last, Function fn);

功能:

对[ first , last )范围内的元素执行Function操作。

例子:

// for_each example
#include <iostream>     // std::cout
#include <algorithm>    // std::for_each
#include <vector>       // std::vector

void myfunction (int i) {  // function:
  std::cout << ' ' << i;
}

struct myclass {           // function object type:
  void operator() (int i) {std::cout << ' ' << i;}
} myobject;

int main () {
  std::vector<int> myvector;
  myvector.push_back(10);
  myvector.push_back(20);
  myvector.push_back(30);

  std::cout << "myvector contains:";
  for_each (myvector.begin(), myvector.end(), myfunction);
  std::cout << '\n';

  // or:
  std::cout << "myvector contains:";
  for_each (myvector.begin(), myvector.end(), myobject);
  std::cout << '\n';

  return 0;
}
运行如下:
myvector contains: 10 20 30
myvector contains: 10 20 30

二:源码剖析
// TEMPLATE FUNCTION for_each
template<class _InIt,
	class _Fn1> inline
	void _For_each(_InIt _First, _InIt _Last, _Fn1& _Func)
	{	// perform function for each element
	for (; _First != _Last; ++_First)
		_Func(*_First);
	}

template<class _InIt,
	class _Fn1> inline
	_Fn1 for_each(_InIt _First, _InIt _Last, _Fn1 _Func)
	{	// perform function for each element
	_DEBUG_RANGE_PTR(_First, _Last, _Func);
	_For_each(_Unchecked(_First), _Unchecked(_Last), _Func);

	return (_STD move(_Func));
	}




源码摘抄自Visual Studio 2015安装目录algorithm文件中。



点击进入目录----> C++源码剖析目录




### 回答1: usb_for_each_dev 是 Linux 内核中的一个函数,用于遍历系统中所有的 USB 设备并对其执行指定的操作。该函数的原型如下: ```c void usb_for_each_dev(struct usb_bus *bus, void *priv, void (*action)(struct usb_device *, void *)); ``` 其中,参数 bus 表示 USB 总线的指针,如果传入 NULL,则遍历所有的 USB 总线;参数 priv 是一个指针,它会被传递给 action 函数;参数 action 是一个函数指针,它用于指定对每个 USB 设备要执行的操作。 使用 usb_for_each_dev 函数,可以方便地遍历系统中所有的 USB 设备,并对其进行操作,比如打印设备信息、进行数据传输等。 ### 回答2: "usb_for_each_dev" 是一个在Linux内核中使用的函数,用于在USB子系统中遍历每个连接的USB设备。这个函数在USB驱动程序中起着重要的作用,可以用来枚举和操作所有连接的USB设备。 通过使用"usb_for_each_dev"函数,可以遍历USB系统中的每个设备,并对它们进行一系列的操作,例如读取设备的描述符、配置设备、发送控制命令、传输数据等等。这个函数提供了一种简便的方式来访问USB设备的属性和功能,帮助开发者更好地与USB设备交互。 "usb_for_each_dev"函数的使用方法较为简单。首先,需要定义一个回调函数,用于处理每个遍历到的USB设备。然后,通过调用"usb_for_each_dev"函数,将定义的回调函数作为参数传入,内核会自动遍历每个设备并调用回调函数进行处理。 这个函数的作用不仅可以在驱动程序中使用,还可以在用户空间中的USB应用程序中使用。通过使用该函数,开发者可以更方便地管理和控制连接的USB设备,实现特定的功能需求。 总之,"usb_for_each_dev"是一个非常有用的函数,它简化了对USB设备的管理和控制,为USB驱动程序开发和USB应用程序开发提供了便利。 ### 回答3: usb_for_each_dev是一个Linux内核中的函数,用于遍历系统中的USB设备。USB设备是指连接到计算机或其他设备的通用串行总线设备,例如USB存储设备、打印机、鼠标、键盘等。 usb_for_each_dev函数的作用是对系统中的每个USB设备执行指定的回调函数。它接受一个回调函数和一个指向数据结构的指针作为参数。在遍历每个USB设备时,回调函数会被调用,并将该USB设备的数据结构作为参数传递给回调函数。 通过usb_for_each_dev函数,可以方便地遍历系统中的所有USB设备,并对它们进行各种操作。例如,可以通过该函数获取USB设备的产品和制造商信息,判断USB设备是否支持某些特定的功能,或者执行某些操作来控制USB设备的行为。 该函数的使用需要对Linux内核有一定的了解,需要在内核源码中编写相关的回调函数,并在需要的地方调用usb_for_each_dev函数来遍历USB设备。通过合理使用usb_for_each_dev函数,可以更好地管理和控制系统中的USB设备,提高系统的稳定性和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值