9template <
template <
typename,
typename...>
typename Cont,
13 typename OutElem =
typename std::invoke_result<F, InElem const&>::type>
14Cont<OutElem> map(Cont<InElem, Args...>
const& in, F&& op)
17 std::transform(in.begin(), in.end(), std::back_inserter(result), op);
26template <std::size_t SIZE,
29 typename OutElem =
typename std::invoke_result<F, InElem const&>::type>
30std::array<OutElem, SIZE> map(std::array<InElem, SIZE>
const& in, F&& op)
32 std::array<OutElem, SIZE> result;
33 std::transform(in.begin(), in.end(), result.begin(), op);
41template <
template <
typename,
typename...>
typename Cont,
45 typename OutElem =
typename std::invoke_result<F, InElem const&, size_t>::type>
46Cont<OutElem> mapi(Cont<InElem, Args...>
const& in, F op)
49 for (
size_t i = 0; i < in.size(); ++i) {
50 result.push_back(op(in[i], i));
58template <
typename Cont,
typename F> Cont filter(Cont
const& in, F op)
61 std::remove_if(copy.begin(), copy.end(), op);