Listing 1: Funktionszeiger for_each #include #include #include #include void add3(int& i){ i +=3; } int main(){ std::cout << std::endl; std::vector myVec1{1,2,3,4,5,6,7,8,9,10}; std::cout << std::setw(20) << std::left << "myVec1: i->i+3: "; std::for_each(myVec1.begin(),myVec1.end(),&add3); for (auto v: myVec1) std::cout << std::setw(6) << std::left << v; std::cout << "\n\n"; } Listing 2: Funktionsobjekte #include #include #includefff #include class AddN{ public: AddN(int n):num(n){}; void operator()(int& i){ i +=num; } private: int num; }; int main(){ std::cout << std::endl; std::vector myVec2{1,2,3,4,5,6,7,8,9,10}; AddN add4(4); std::for_each(myVec2.begin(),myVec2.end(),add4); std::cout << std::setw(20) << std::left << "myVec2: i->i+4: "; for (auto v: myVec2) std::cout << std::setw(6) << std::left << v; std::cout << "\n"; std::vector myVec3{1,2,3,4,5,6,7,8,9,10}; AddN addMinus5(-5); std::for_each(myVec3.begin(),myVec3.end(),addMinus5); std::cout << std::setw(20) << std::left << "myVec3: i->i-5: "; for (auto v: myVec3) std::cout << std::setw(6) << std::left << v; std::cout << "\n\n"; } Listing 3: Lambda-Funktionen #include #include #include #include #include int main(){ std::cout << std::endl; std::vector myVec4{1,2,3,4,5,6,7,8,9,10}; std::cout << std::setw(20) << std::left << "myVec4: i->3*i+5: "; std::for_each(myVec4.begin(),myVec4.end(),[](int& i){i=3*i+5;}); for (auto v: myVec4) std::cout << std::setw(6) << std::left << v; std::cout << "\n"; std::vector myVec5{1,2,3,4,5,6,7,8,9,10}; std::cout << std::setw(20) << std::left << "myVec5: i->i*i "; std::for_each(myVec5.begin(),myVec5.end(),[](int& i){i=i*i;}); for (auto v: myVec5) std::cout << std::setw(6) << std::left << v; std::cout << "\n"; std::vector myVec6{1,2,3,4,5,6,7,8,9,10}; std::for_each(myVec6.begin(),myVec6.end(),[](double& i){i=std::sqrt(i);}); std::cout << std::setw(20) << std::left << "myVec6: i->sqrt(i): "; for (auto v: myVec6) std::cout << std::fixed << std::setprecision(2) << std::setw(6) << v ; std::cout << "\n\n"; }