SeqAn3 3.4.0
The Modern C++ library for sequence analysis.
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
16
17namespace std
18{
26template <std::ranges::input_range urng_t>
27 requires seqan3::semialphabet<std::ranges::range_reference_t<urng_t>>
28struct 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};
45 for (alphabet_t character : range)
46 {
48 result += h(character);
49 }
50 return result;
51 }
52};
53
54} // namespace std
Provides various transformation traits used by the range module.
constexpr auto alphabet_size
A type trait that holds the size of a (semi-)alphabet.
Definition alphabet/concept.hpp:834
Provides overloads for std::hash.
T hash(T... args)
SeqAn specific customisations in the standard namespace.
size_t operator()(urng2_t &&range) const noexcept
Compute the hash for a range of characters.
Definition range/hash.hpp:40
Hide me