TrinityCore
Containers.h File Reference
#include "Concepts.h"
#include "Define.h"
#include "Random.h"
#include <algorithm>
#include <iterator>
#include <span>
#include <stdexcept>
#include <type_traits>
#include <utility>
#include <vector>
+ Include dependency graph for Containers.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Trinity::CheckedBufferOutputIterator< T >
 

Namespaces

namespace  Trinity
 
namespace  Trinity::Containers
 
namespace  Trinity::Containers::Impl
 

Functions

template<std::ranges::forward_range C>
void Trinity::Containers::RandomResize (C &container, std::size_t requestedSize)
 
template<std::ranges::forward_range C, invocable_r< bool, std::ranges::range_reference_t< C > > Predicate>
void Trinity::Containers::RandomResize (C &container, Predicate &&predicate, std::size_t requestedSize)
 
template<std::ranges::input_range C>
auto Trinity::Containers::SelectRandomContainerElement (C const &container) -> std::add_const_t< decltype(*std::ranges::begin(container))> &
 
template<std::ranges::input_range C>
auto Trinity::Containers::SelectRandomWeightedContainerElement (C const &container, std::span< double > const &weights) -> decltype(std::ranges::begin(container))
 
template<std::ranges::input_range C, invocable_r< double, std::ranges::range_reference_t< C > > Fn>
auto Trinity::Containers::SelectRandomWeightedContainerElement (C const &container, Fn weightExtractor) -> decltype(std::ranges::begin(container))
 
template<std::random_access_iterator Iterator>
void Trinity::Containers::RandomShuffle (Iterator begin, Iterator end)
 Reorder the elements of the iterator range randomly. More...
 
template<std::ranges::random_access_range C>
void Trinity::Containers::RandomShuffle (C &container)
 Reorder the elements of the container randomly. More...
 
template<std::input_iterator Iterator1, std::sentinel_for< Iterator1 > Sentinel1, std::input_iterator Iterator2, std::sentinel_for< Iterator2 > Sentinel2>
constexpr bool Trinity::Containers::Intersects (Iterator1 first1, Sentinel1 last1, Iterator2 first2, Sentinel2 last2)
 
template<std::input_iterator Iterator1, std::sentinel_for< Iterator1 > Sentinel1, std::input_iterator Iterator2, std::sentinel_for< Iterator2 > Sentinel2, invocable_r< bool, std::iter_reference_t< Iterator1 >, std::iter_reference_t< Iterator2 > > Predicate>
constexpr bool Trinity::Containers::Intersects (Iterator1 first1, Sentinel1 last1, Iterator2 first2, Sentinel2 last2, Predicate &&equalPred)
 
template<typename Container , typename Predicate >
void Trinity::Containers::Impl::EraseIfMoveAssignable (Container &c, Predicate p)
 
template<typename Container , typename Predicate >
void Trinity::Containers::Impl::EraseIfNotMoveAssignable (Container &c, Predicate p)
 
template<std::ranges::forward_range Container, invocable_r< bool, std::ranges::range_reference_t< Container > > Predicate>
requires requires { c.erase(c.begin(), c.end()); }
void Trinity::Containers::EraseIf (Container &c, Predicate p)
 
template<typename T >
decltype(auto) Trinity::Containers::EnsureWritableVectorIndex (std::vector< T > &vec, typename std::vector< T >::size_type i)
 
template<typename T >
decltype(auto) Trinity::Containers::EnsureWritableVectorIndex (std::vector< T > &vec, typename std::vector< T >::size_type i, T const &resizeDefault)