Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <functional>
- template<typename T>
- void dump(std::vector<T> keys)
- {
- std::wcout << L"Keys: [";
- auto isFirst = true;
- for (auto key : keys)
- {
- std::wcout << (isFirst ? L"" : L", ") << key;
- isFirst = false;
- }
- std::wcout << L"]" << std::endl;
- }
- template<typename T1, typename T2> using Mapper = T2(*)(T1 item);
- template<typename T1, typename T2>
- std::vector<T2> map(const Mapper<T1, T2> mapper, const std::vector<T1> vec)
- {
- std::vector<T2> result;
- for (T1 x : vec)
- {
- result.push_back(mapper(x));
- }
- return result;
- }
- using namespace std::placeholders;
- auto func = [](int n, int m)
- {
- return n * m;
- };
- int main()
- {
- auto multiplier = 5;
- std::function<int(int)> boundMapper = std::bind(func, _1, multiplier);
- auto mapper = *boundMapper.target<int(int)>();
- auto list = map<int, int>(
- mapper,
- { 1, 2, 3 }
- );
- dump<int>(list);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement