SeqAn3
3.4.0
The Modern C++ library for sequence analysis.
Toggle main menu visibility
Loading...
Searching...
No Matches
range/hash.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin
2
// SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik
3
// SPDX-License-Identifier: BSD-3-Clause
4
9
10
#pragma once
11
12
#include <ranges>
13
14
#include <
seqan3/alphabet/hash.hpp
>
15
#include <
seqan3/core/range/type_traits.hpp
>
16
17
namespace
std
18
{
26
template
<std::ranges::input_range urng_t>
27
requires
seqan3::semialphabet<std::ranges::range_reference_t<urng_t>>
28
struct
hash
<urng_t>
29
{
38
template
<std::ranges::input_range urng2_t>
39
requires
seqan3::semialphabet<std::ranges::range_reference_t<urng2_t>>
40
size_t
operator()
(urng2_t && range)
const
noexcept
41
{
42
using
alphabet_t = std::ranges::range_reference_t<urng_t>;
43
size_t
result{0};
44
hash<alphabet_t>
h{};
45
for
(alphabet_t character : range)
46
{
47
result *=
seqan3::alphabet_size<alphabet_t>
;
48
result += h(character);
49
}
50
return
result;
51
}
52
};
53
54
}
// namespace std
type_traits.hpp
Provides various transformation traits used by the range module.
seqan3::alphabet_size
constexpr auto alphabet_size
A type trait that holds the size of a (semi-)alphabet.
Definition
alphabet/concept.hpp:834
hash.hpp
Provides overloads for std::hash.
std::hash< urng_t >::hash
T hash(T... args)
std
SeqAn specific customisations in the standard namespace.
std::hash< urng_t >::operator()
size_t operator()(urng2_t &&range) const noexcept
Compute the hash for a range of characters.
Definition
range/hash.hpp:40
Hide me
Version:
seqan3
alphabet
range
hash.hpp
Generated on
for SeqAn3 by
1.17.0