Skip to content

Instantly share code, notes, and snippets.

View elbeno's full-sized avatar

Ben Deane elbeno

View GitHub Profile
@elbeno
elbeno / random_duration.cpp
Last active November 14, 2016 14:59
Uniform distributions with chrono durations
#include <algorithm>
#include <array>
#include <chrono>
#include <functional>
#include <iostream>
#include <iterator>
#include <limits>
#include <random>
#include <type_traits>
@elbeno
elbeno / join.cpp
Last active August 21, 2016 15:52
Join algorithm
#include <algorithm>
#include <cstddef>
#include <iterator>
#include <type_traits>
#include <utility>
using namespace std;
template <typename InputIt, typename OutputIt,
typename FwdIt, typename F>
@elbeno
elbeno / time.cpp
Last active August 15, 2016 21:43
Time functionality snippets
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <algorithm>
#include <chrono>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <sstream>
@elbeno
elbeno / tuple_fold.cpp
Last active October 4, 2016 12:38
Folding over a tuple
#include <cstddef>
#include <cstring>
#include <cwctype>
#include <functional>
#include <iostream>
#include <string>
#include <tuple>
#include <type_traits>
#include <utility>
@elbeno
elbeno / variant_fold.cpp
Last active January 19, 2017 01:26
Folding over a variant (JSON example)
#include <eggs/variant.hpp>
#include <cstddef>
#include <iomanip>
#include <iostream>
#include <map>
#include <sstream>
#include <string>
#include <utility>
#include <vector>
@elbeno
elbeno / numbers.cpp
Last active May 3, 2016 05:58
Unfold formulations
#include <algorithm>
#include <cassert>
#include <iostream>
#include <iterator>
#include <map>
#include <numeric>
#include <sstream>
#include <string>
#include <utility>
#include <vector>
@elbeno
elbeno / delimited_algos.cpp
Last active April 21, 2016 21:50
Algorithms for dealing with delimited strings
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
#include <utility>
using namespace std;
template <typename FwdIt1, typename FwdIt2, typename T>
std::pair<FwdIt1, FwdIt1> find_delimited(
@elbeno
elbeno / curry_howard_silliness.cpp
Created April 2, 2016 08:00
Curry-Howard silliness
#include <functional>
#include <iostream>
#include <string>
#include <tuple>
#include <type_traits>
using namespace std;
// -----------------------------------------------------------------------------
// A silly (in C++) application of the Curry-Howard isomorphism to produce the
@elbeno
elbeno / inplace_merge.cpp
Last active November 25, 2021 03:04
A sketch of inplace_merge
#include <cassert>
#include <iterator>
#include <memory>
#include <utility>
template <typename ForwardIt>
void my_inplace_merge(ForwardIt first, ForwardIt middle, ForwardIt last)
{
if (first == middle || middle == last) return;
@elbeno
elbeno / element_get.h
Last active November 4, 2016 01:58
Tersely copy keys from a map
#include <cstddef>
#include <tuple>
#include <utility>
template <size_t I, typename T>
struct element_get_helper;
template <size_t I, typename... Ts>
struct element_get_helper<I, std::tuple<Ts...>>
{