SeqAn3 3.4.0-rc.1
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-2024 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
10#pragma once
11
12#include <ranges>
13
16
17namespace std
18{
26template <std::ranges::input_range urng_t>
28struct hash<urng_t>
29{
38 template <std::ranges::input_range 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 {
47 result *= seqan3::alphabet_size<alphabet_t>;
48 result += h(character);
49 }
50 return result;
51 }
52};
53
54} // namespace std
Provides various transformation traits used by the range module.
Provides overloads for std::hash.
The basis for seqan3::alphabet, but requires only rank interface (not char).
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