3
0
mirror of https://github.com/triqs/dft_tools synced 2024-12-25 13:53:40 +01:00
dft_tools/doc/reference/c++/utilities/tupletools_4.cpp
Olivier Parcollet 36a60ce529 tuple tools : simplify
- simplify implementation of several functions.
- clean API, rename, etc...
- add more documentation
2014-06-21 21:11:33 +02:00

25 lines
744 B
C++

#include <triqs/utility/tuple_tools.hpp>
#include <iostream>
int main() {
auto t = std::make_tuple(1, 2.3, 4.3, 8);
// a simple example : make a sum
auto f = [](double x, double r) { return x + r; };
auto res = triqs::tuple::fold(f, t, 0); // <-- R is int but res is a double (from f's return type).
std::cout << res << std::endl;
// the types of x and r may be different
triqs::tuple::fold([](double x, std::ostream & os)->std::ostream & { return os << "|" << x; }, t, std::cout);
// example with zip
auto t0 = std::make_tuple(1, 2, 3, 4);
auto t1 = std::make_tuple(1, -1, 1, -1);
auto res2 = triqs::tuple::fold([](double x, double y, double r) { return y * x + r; }, t0, t1, 0);
std::cout << "\n " << res2 << std::endl;
}