mirror of
https://github.com/Light-City/CPlusPlusThings.git
synced 2026-02-03 18:43:52 +08:00
support bazel complie this project and format code.
This commit is contained in:
34
learn_class/modern_cpp_30/compilercompute/fmap.cpp
Normal file
34
learn_class/modern_cpp_30/compilercompute/fmap.cpp
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// Created by light on 20-1-5.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
template <template <typename, typename> class OutContainer = vector, typename F,
|
||||
class R>
|
||||
auto fmap(F &&f, R &&inputs) {
|
||||
typedef decay_t<decltype(f(*inputs.begin()))> result_type;
|
||||
|
||||
OutContainer<result_type, allocator<result_type>> result;
|
||||
|
||||
for (auto &&item : inputs) {
|
||||
result.push_back(f(item));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// 对每一个数进行加1操作
|
||||
int add_1(int x) { return x + 1; }
|
||||
|
||||
int main() {
|
||||
vector<int> v{1, 2, 3, 4, 5};
|
||||
auto result = fmap(add_1, v);
|
||||
|
||||
for (auto item : result)
|
||||
cout << item << " ";
|
||||
cout << endl;
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user