dl
dl
base
dl_range_accumulate.h
浏览该文件的文档.
1
12
#pragma once
13
14
#include <type_traits>
15
17
namespace
dl::Accumulate
18
{
19
//因为减 和 除是逆操作,其值互反,所以这儿不实现
20
//标准库的accumulate需要传入初值,这里简化了
21
23
template
<
typename
C>
24
constexpr
auto
Add
(
const
C
& container)
25
{
26
using
V
= std::decay_t<
decltype
(container)>;
27
using
T
=
typename
V::value_type;
28
if
(container.empty())
29
return
T
{};
30
T
ret = *container.begin();
31
for
(
auto
iter = container.begin() + 1; iter != container.end(); ++iter)
32
ret += *iter;
33
return
ret;
34
}
35
37
template
<
typename
C>
38
constexpr
auto
Mul
(
const
C
& container)
39
{
40
using
V
= std::decay_t<
decltype
(container)>;
41
using
T
=
typename
V::value_type;
42
if
(container.empty())
43
return
T
{};
44
T
ret = *container.begin();
45
for
(
auto
iter = container.begin() + 1; iter != container.end(); ++iter)
46
ret *= *iter;
47
return
ret;
48
}
49
}
dl::Accumulate
所有元素操作,返回一个值
定义
dl_range_accumulate.h:18
dl::Accumulate::Add
constexpr auto Add(const C &container)
求和sum
定义
dl_range_accumulate.h:24
dl::Accumulate::Mul
constexpr auto Mul(const C &container)
求积product
定义
dl_range_accumulate.h:38
dl::KeyCode::C
@ C
定义
dl_input.h:104
dl::KeyCode::V
@ V
定义
dl_input.h:123
dl::KeyCode::T
@ T
定义
dl_input.h:121
制作者
1.13.1