mal-packet-weaver
C++20 packet serialization/deserialization library.
Loading...
Searching...
No Matches
stl-helpers.hpp
Go to the documentation of this file.
1#pragma once
2#include "library-pch.hpp"
8namespace mal_toolkit
9{
15 template <typename T>
16 void SortedInsert(std::vector<T> &range, T &&value)
17 {
18 auto lower = std::lower_bound(range.begin(), range.end(), value);
19 range.emplace(lower, std::forward<T>(value));
20 }
21
29 template <typename T>
30 void SortedInsert(std::vector<T> &range, T &&value, std::function<bool(T const &, T const &)> const &comparator)
31 {
32 auto lower = std::lower_bound(range.begin(), range.end(), value, comparator);
33 range.emplace(lower, std::forward<T>(value));
34 }
35
41 template <typename T>
42 void SortedErase(std::vector<T> &range, T &&value)
43 {
44 auto t = std::equal_range(range.begin(), range.end(), value);
45 range.erase(t.first, t.second);
46 }
47
55 template <typename T>
56 void SortedErase(std::vector<T> &range, T &&value, std::function<bool(T const &, T const &)> const &comparator)
57 {
58 auto t = std::equal_range(range.begin(), range.end(), value, comparator);
59 range.erase(t.first, t.second);
60 }
61
67 template <typename T>
68 void hash_combine(size_t &seed, T const &hash)
69 {
70 seed ^= std::hash<T>{}(hash) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
71 }
72} // namespace mal_toolkit
Precompiled header (PCH) file for common headers used across the library.
Contains a collection of tools and utilities provided by the MAL Toolkit library.
Definition backoffs.hpp:7
void SortedInsert(std::vector< T > &range, T &&value)
Inserts a value into a sorted vector while maintaining the sorted order.
void SortedErase(std::vector< T > &range, T &&value)
Efficiently erases elements equal to a given value from a sorted vector.
void hash_combine(size_t &seed, T const &hash)
Combines a hash value into an existing hash using bitwise operations.