Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "immutable.hpp"
- #include <vector>
- #include <list>
- #include <string>
- #include <cassert>
- using namespace std;
- int main(void){
- using namespace colls;
- auto testMap = [&]() {
- vector<int> v = {1, 2, 3, 5, 10, 100 };
- auto v2 = map(v, [](auto& a){ a *= 2; });
- for_each(v2.begin(), v2.end(), [](auto& a){ cout << a << ", "; });
- cout << endl;
- int v3[] = {1, 2, 3, 5, 10, 100 };
- auto v4 = map(v3, [](auto& a) {a *= 2; });
- for_each(begin(v4), end(v4), [](auto a) {cout << a << ", "; } );
- cout << endl;
- };
- testMap();
- auto testFilter = [&]() {
- vector<int> v = {1, 2, 3, 5, 10, 100 };
- auto v2 = filter(v, [](auto& a){ return a % 2 == 0; });
- for_each(v2.begin(), v2.end(), [](auto& a){ cout << a << ", "; });
- cout << endl;
- };
- testFilter();
- auto testReduceLeft = [&]() {
- vector<int> v = {1, 2, 3, 5, 10, 100 };
- auto add = [](const auto& l, const auto& r) { return l + r; };
- vector<int> v1 = {1, 2, 3, 4, 5, 6, 7, 8, 9};
- cout << "reduce v1 = " << reduceLeft(v1, add ) << endl;
- vector<string> v2 = {"this ", "is ", "a ", "pen."};
- cout << "reduce v2 = " << reduceLeft(v2, add ) << endl;
- vector<double> v3;
- cout << "reduce v3 = " << reduceLeft(v3, add) << endl;
- };
- testReduceLeft();
- auto testForEach = [&]() {
- vector<int> v = {1, 2, 3, 5, 10, 100 };
- auto l = for_each<std::list<int>>(v, [](auto& a) { ++a; } );
- for(auto a : l) { cout << a << ", "; }
- cout << endl;
- auto l2 = for_each(v, [](auto& a) { ++a; } );
- for(auto a : l2) { cout << a << ", "; }
- cout << endl;
- };
- testForEach();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement