修改元素的值或应用一个自定义函数等等。在 C++ 标准库中,std::for_each() 算法函数提供了一种方便的方式来对容器范围内的元素执行指定的操作。
在带有boost :: bind的映射中使用for_each可能是合理的,但是很可能有一种不同的通用方法会更好地工作(很多时候出现这种问题,这是因为std::for_each在这种情况下是一个糟糕的选择,并且 像std::copy或std :: accumulate`这样的工作会更简单)。 MyStruct用于一种粒子系统,其中MyStruct是粒子。 const函数是draw()...
使用 该 std::foreach 循环 , 可以用于 遍历 STL 标准模板库 中提供的容器 std::for_each 是一个算法 , 该算法 接受一对迭代器 , 表示 容器 的 起始位置 和 结束位置 和 一个可调用对象 , 如 : 函数 / 函数指针 / 仿函数 / 函数对象 / Lambda 表达式 , 并对范围内的每个元素调用该可调用对象 ; ...
如果使用std :: for_each()函数,则会在该位置而不是该位置获取值。我需要这个职位本身。 一个想法,显然是没有效率的,是创建一个与我的数据长度相同的整数向量。这样,我可以将一个伪向量上的迭代器传递给for_each中的函数,传递给我的函数的值将是该位置。但是,这似乎是效率最低的方法。 有什么想法吗? 我的...
iostream> struct Sum { Sum(): sum{0} { } void operator()(int n) { sum += n; } int sum; }; int main() { std::vector<int> nums{3, 4, 2, 8, 15, 267}; auto print = [](const int& n) { std::cout << " " << n; }; std::cout << "before:"; std::for_each(...
for_each算法范围[_First, _ Last)中的每个元素调用函数_Fn1,并返回输入的参数_Func。此函数不会修改序列中的任何元素。 // for_each example#include<iostream>// std::cout#include<algorithm>// std::for_each#include<vector>// std::vector#include<list>voidmyfunction(inti){// function:std::cout...
可能的问题是第一个编译器想要一个 using namespace std; 在允许从该命名空间使用未覆盖的标识符(例如 for_each),而第二个是过度允许的,并且不需要它。 当然,随着其他答案和评论热烈指出,有可能 - 可能是优选的替代方案,例如明确拼写它 std::for_each 每次发生,或使用a 使用宣言 (using std::for_each;)而...
Description : Demo how to use for_each to return value and remain state. 7 Release : 05/13/2007 1.0 8 05/15/2007 2.0 9 */ 10 11 #include<iostream> 12 #include<algorithm> 13 #include<vector> 14 15 usingnamespacestd; 16 17
usingnamespacestd; 15 16 voidprintElem(intelem,constchar*prefix) { 17 cout<<prefix<<elem<<endl; 18 } 19 20 intmain() { 21 intia[]= {1,2,3}; 22 vector<int>ivec(ia, ia+sizeof(ia)/sizeof(int)); 23 24 for_each(ivec.begin(), ivec.end(), bind2nd(ptr_fun(printElem),"...
std::vector<int>ivec(3,1); 24 25 void(*pf) (int&)=coutIterator1; 26 for_each(ivec.begin(), ivec.end(), pf); 27 28 std::cout<<std::endl; 29 30 for_each(ivec.begin(), ivec.end(), coutIterator2); 31 32 return0; ...