覚書。
// 呼び出し側が高速に使える forEach 的な手法
//これは「関数の中に関数を渡して処理する」=高階関数というテクです!
// fnとは?渡されたラムダ関数・関数ポインタ・関数オブジェクトのこと。
//// 全要素を加算する処理(呼び出し側は何も意識せず!)
template <typename Func>
void forEach(Func&& fn) {
T* pVec = this->mVector;
for (size_t i = 0; i < piSize; ++i) {
#ifdef PREFETCH_OPT
__builtin_prefetch(&pVec[i + 1], 0, 1);
#endif
fn(pVec[i]); // ← fnがここで1要素に対する処理を行っている!
}
}
// //呼び出し方
// void foo(){
// int sum = 0;
// arr.forEach([&](int& val) {
// sum += val; // ← fnの中身
// });
// }
引用 ChatGPT