cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
functional_impl.hpp File Reference
#include <cpp-toolbox/functional/functional.hpp>
#include <functional>
#include <map>
#include <memory>
#include <mutex>
#include <numeric>
#include <optional>
#include <stdexcept>
#include <tuple>
#include <type_traits>
#include <unordered_map>
#include <utility>
#include <variant>
#include <vector>
Include dependency graph for functional_impl.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  toolbox::functional::detail_impl::MemoizeHelperState< R, Args >
 
struct  toolbox::functional::MemoizedFunction< R(Args...)>::State
 

Namespaces

namespace  toolbox
 
namespace  toolbox::functional
 
namespace  toolbox::functional::detail_impl
 

Functions

template<typename G , typename F >
auto toolbox::functional::compose (G &&g, F &&f)
 将两个函数组合成一个函数 / Composes two functions into a single function
 
template<typename F1 , typename... FRest>
auto toolbox::functional::compose (F1 &&f1, FRest &&... rest)
 将多个函数组合成一个函数 / Composes multiple functions into a single function
 
CPP_TOOLBOX_EXPORT auto toolbox::functional::compose ()
 空的compose函数,会抛出错误 / Empty compose function that throws an error
 
template<typename F , typename Arg1 >
auto toolbox::functional::bind_first (F &&f, Arg1 &&arg1)
 绑定函数的第一个参数 / Binds the first argument of a function
 
template<typename T , typename F >
auto toolbox::functional::map (const std::optional< T > &opt, F &&f) -> std::optional< std::invoke_result_t< F, const T & > >
 在optional值上映射函数 / Maps a function over an optional value
 
template<typename T , typename F >
auto toolbox::functional::map (std::optional< T > &&opt, F &&f) -> std::optional< std::invoke_result_t< F, T && > >
 在optional右值上映射函数 / Maps a function over an optional rvalue
 
template<typename T , typename F >
auto toolbox::functional::flatMap (const std::optional< T > &opt, F &&f) -> std::invoke_result_t< F, const T & >
 在optional值上平面映射函数 / Flat maps a function over an optional value
 
template<typename T , typename F >
auto toolbox::functional::flatMap (std::optional< T > &&opt, F &&f) -> std::invoke_result_t< F, T && >
 在optional右值上平面映射函数 / Flat maps a function over an optional rvalue
 
template<typename T , typename U >
auto toolbox::functional::orElse (const std::optional< T > &opt, U &&default_value) -> T
 返回包含的值或默认值 / Returns the contained value or a default
 
template<typename T , typename F >
auto toolbox::functional::orElseGet (const std::optional< T > &opt, F &&default_func) -> T
 返回包含的值或调用函数获取默认值 / Returns the contained value or calls function for default
 
template<typename T , typename P >
auto toolbox::functional::filter (const std::optional< T > &opt, P &&p) -> std::optional< T >
 基于谓词过滤optional / Filters an optional based on a predicate
 
template<typename T , typename P >
auto toolbox::functional::filter (std::optional< T > &&opt, P &&p) -> std::optional< T >
 基于谓词过滤optional右值 / Filters an optional rvalue based on a predicate
 
template<typename... Ts, typename... Fs>
auto toolbox::functional::match (const std::variant< Ts... > &var, Fs &&... visitors) -> decltype(auto)
 使用访问器函数对variant进行模式匹配 / Pattern matches on a variant using visitor functions
 
template<typename... Ts, typename... Fs>
auto toolbox::functional::match (std::variant< Ts... > &var, Fs &&... visitors) -> decltype(auto)
 对非const左值variant使用访问器函数进行匹配 / Match variant with visitor functions for non-const lvalue variant
 
template<typename... Ts, typename... Fs>
auto toolbox::functional::match (std::variant< Ts... > &&var, Fs &&... visitors) -> decltype(auto)
 对右值variant使用访问器函数进行匹配 / Match variant with visitor functions for rvalue variant
 
template<typename ResultVariant , typename... Ts, typename F >
auto toolbox::functional::map (const std::variant< Ts... > &var, F &&f) -> ResultVariant
 对variant中保存的值应用函数并在新variant中返回结果 / Apply a function to the value held by a variant and return result in a new variant
 
template<typename ResultVariant , typename... Ts, typename F >
auto toolbox::functional::map (std::variant< Ts... > &var, F &&f) -> ResultVariant
 对非const左值variant中保存的值应用函数 / Apply a function to the value held by a non-const lvalue variant
 
template<typename ResultVariant , typename... Ts, typename F >
auto toolbox::functional::map (std::variant< Ts... > &&var, F &&f) -> ResultVariant
 对右值variant中保存的值应用函数 / Apply a function to the value held by an rvalue variant
 
template<typename Container , typename Func >
auto toolbox::functional::map (const Container &input, Func &&f) -> std::vector< std::invoke_result_t< Func, typename Container::const_reference > >
 对容器中的每个元素应用函数并返回结果向量 / Apply a function to each element in a container and return results in a vector
 
template<typename Container , typename Predicate >
auto toolbox::functional::filter (const Container &input, Predicate &&p) -> std::vector< typename Container::value_type >
 过滤满足谓词的容器元素 / Filter elements from a container that satisfy a predicate
 
template<typename Container , typename T , typename BinaryOp >
auto toolbox::functional::reduce (const Container &input, T identity, BinaryOp &&op) -> T
 使用带初始值的二元操作归约容器元素 / Reduce container elements using a binary operation with initial value
 
template<typename Container , typename BinaryOp >
auto toolbox::functional::reduce (const Container &input, BinaryOp &&op) -> typename Container::value_type
 使用二元操作归约非空容器元素 / Reduce non-empty container elements using a binary operation
 
template<typename... Containers>
auto toolbox::functional::zip (const Containers &... containers) -> std::vector< std::tuple< decltype(*std::cbegin(std::declval< const Containers & >()))... > >
 将多个容器压缩成元组向量 / Zip multiple containers into a vector of tuples
 
template<typename ContainerKeys , typename ContainerValues , typename Key , typename Value , typename Hash , typename KeyEqual , typename Alloc >
auto toolbox::functional::zip_to_unordered_map (const ContainerKeys &keys, const ContainerValues &values) -> std::unordered_map< Key, Value, Hash, KeyEqual, Alloc >
 将两个序列压缩成无序映射 / Zip two sequences into an unordered_map
 
template<typename Signature , typename Func >
auto toolbox::functional::memoize (Func &&f)
 创建带显式签名的记忆化函数 / Create a memoized function with explicit signature
 
template<typename R , typename... Args, typename Func >
auto toolbox::functional::memoize_explicit (Func &&f) -> std::function< R(Args...)>
 创建带显式返回和参数类型的记忆化函数 / Create a memoized function with explicit return and argument types