OpenSiv3D  v0.6.5
C++20 framework for creative coding
s3d::Array< Type, Allocator > Class Template Reference

動的配列 More...

#include <String.hpp>

Public Types

using container_type = std::vector< Type, Allocator >
 
using value_type = typename container_type::value_type
 配列の要素の型 More...
 
using pointer = typename container_type::pointer
 要素のポインタ型 More...
 
using const_pointer = typename container_type::const_pointer
 要素の const ポインタ型 More...
 
using reference = typename container_type::reference
 要素の参照型 More...
 
using const_reference = typename container_type::const_reference
 要素の const 参照型 More...
 
using iterator = typename container_type::iterator
 イテレータ型 More...
 
using const_iterator = typename container_type::const_iterator
 const イテレータ型 More...
 
using reverse_iterator = typename container_type::reverse_iterator
 リバース・イテレータ型 More...
 
using const_reverse_iterator = typename container_type::const_reverse_iterator
 const リバース・イテレータ型 More...
 
using size_type = typename container_type::size_type
 要素の個数を表現する型 More...
 
using difference_type = typename container_type::difference_type
 2 つの要素間の距離を表現する型 More...
 
using allocator_type = typename container_type::allocator_type
 アロケータの型 More...
 

Public Member Functions

SIV3D_NODISCARD_CXX20 Array ()=default
 デフォルトコンストラクタ More...
 
SIV3D_NODISCARD_CXX20 Array (const Array &)=default
 コピーコンストラクタ More...
 
SIV3D_NODISCARD_CXX20 Array (Array &&)=default
 ムーブコンストラクタ More...
 
SIV3D_NODISCARD_CXX20 Array (const container_type &other)
 std::vector からのコピーで配列を作成します。 More...
 
SIV3D_NODISCARD_CXX20 Array (container_type &&other)
 std::vector からのムーブで配列を作成します。 More...
 
SIV3D_NODISCARD_CXX20 Array (const Allocator &alloc) noexcept
 
SIV3D_NODISCARD_CXX20 Array (size_type count, const value_type &value, const Allocator &alloc=Allocator{})
 count 個の value で配列を作成します。 More...
 
SIV3D_NODISCARD_CXX20 Array (size_type count, const Allocator &alloc=Allocator{})
 count 個の Type() で配列を作成します。 More...
 
template<class Iterator >
SIV3D_NODISCARD_CXX20 Array (Iterator first, Iterator last, const Allocator &alloc=Allocator{})
 イテレータが指す範囲の要素から配列を作成します。 More...
 
SIV3D_NODISCARD_CXX20 Array (const Array &other, const Allocator &alloc)
 
SIV3D_NODISCARD_CXX20 Array (Array &&other, const Allocator &alloc)
 
SIV3D_NODISCARD_CXX20 Array (const container_type &other, const Allocator &alloc)
 
SIV3D_NODISCARD_CXX20 Array (container_type &&other, const Allocator &alloc)
 
SIV3D_NODISCARD_CXX20 Array (std::initializer_list< value_type > ilist, const Allocator &alloc=Allocator{})
 初期化リストから配列を作成します。 More...
 
template<class ArrayIsh , std::enable_if_t< Meta::HasAsArray< ArrayIsh >::value > * = nullptr>
SIV3D_NODISCARD_CXX20 Array (ArrayIsh &&a)
 asArray() を持つ型から配列を作成します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< Type, Fty >> * = nullptr>
SIV3D_NODISCARD_CXX20 Array (size_type size, Arg::generator_< Fty > generator)
 ジェネレータ関数を使って配列を作成します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< Type, Fty, size_t >> * = nullptr>
SIV3D_NODISCARD_CXX20 Array (size_type size, Arg::indexedGenerator_< Fty > indexedGenerator)
 インデックス指定ジェネレータ関数を使って配列を作成します。 More...
 
SIV3D_NODISCARD_CXX20 Array (Arg::reserve_< size_type > size)
 配列を作成し、reserve() します。 More...
 
Arrayoperator= (const Array &)=default
 コピー代入演算子 More...
 
Arrayoperator= (Array &&)=default
 ムーブ代入演算子 More...
 
Arrayoperator= (const container_type &other)
 
Arrayoperator= (container_type &&other)
 
Arrayoperator= (std::initializer_list< value_type > ilist)
 
template<class ArrayIsh , std::enable_if_t< Meta::HasAsArray< ArrayIsh >::value > * = nullptr>
Arrayoperator= (const ArrayIsh &a)
 
Arrayassign (size_type count, const value_type &value)
 
template<class Iterator >
Arrayassign (Iterator first, Iterator last)
 
Arrayassign (std::initializer_list< value_type > ilist)
 
allocator_type get_allocator () const noexcept
 
const container_typegetContainer () const noexcept
 
 operator container_type () const noexcept
 
const value_typeat (size_t index) const
 要素にアクセスします。 More...
 
value_typeat (size_t index)
 要素にアクセスします。 More...
 
const value_typeoperator[] (size_t index) const
 要素にアクセスします。 More...
 
value_typeoperator[] (size_t index)
 要素にアクセスします。 More...
 
reference front ()
 先頭の要素への参照を返します。 More...
 
const_reference front () const
 先頭の要素への参照を返します。 More...
 
reference back ()
 末尾の要素への参照を返します。 More...
 
const_reference back () const
 末尾の要素への参照を返します。 More...
 
value_typedata () noexcept
 先頭の要素を指すポインタを返します。 More...
 
const value_typedata () const noexcept
 先頭の要素を指すポインタを返します。 More...
 
iterator begin () noexcept
 配列の先頭位置を指すイテレータを返します。 More...
 
iterator end () noexcept
 配列の終端位置を指すイテレータを返します。 More...
 
const_iterator begin () const noexcept
 配列の先頭位置を指すイテレータを返します。 More...
 
const_iterator end () const noexcept
 配列の終端位置を指すイテレータを返します。 More...
 
const_iterator cbegin () const noexcept
 配列の先頭位置を指すイテレータを返します。 More...
 
const_iterator cend () const noexcept
 配列の終端位置を指すイテレータを返します。 More...
 
reverse_iterator rbegin () noexcept
 配列の末尾位置を指すリバース・イテレータを返します。 More...
 
reverse_iterator rend () noexcept
 配列の先端位置を指すリバース・イテレータを返します。 More...
 
const_reverse_iterator rbegin () const noexcept
 配列の末尾位置を指すリバース・イテレータを返します。 More...
 
const_reverse_iterator rend () const noexcept
 配列の先端位置を指すリバース・イテレータを返します。 More...
 
const_reverse_iterator crbegin () const noexcept
 配列の末尾位置を指すリバース・イテレータを返します。 More...
 
const_reverse_iterator crend () const noexcept
 配列の先端位置を指すリバース・イテレータを返します。 More...
 
bool empty () const noexcept
 配列が空であるかを返します。 More...
 
bool isEmpty () const noexcept
 配列が空であるかを返します。 More...
 
 operator bool () const noexcept
 配列が要素を持っているかを返します。 More...
 
size_type size () const noexcept
 配列の要素数を返します。 More...
 
size_type max_size () const noexcept
 配列の要素数の最大値を返します。 More...
 
void reserve (size_type n)
 要素数 n までメモリの再確保無しで格納できるよう、必要に応じてメモリを再確保します More...
 
size_type capacity () const noexcept
 メモリの再確保無しで格納できる要素数を返します。 More...
 
void shrink_to_fit ()
 capacity()size() まで減らすようにします。 More...
 
void clear () noexcept
 
iterator insert (const_iterator pos, const value_type &value)
 
iterator insert (const_iterator pos, value_type &&value)
 
iterator insert (const_iterator pos, size_type count, const value_type &value)
 
template<class Iterator >
iterator insert (const_iterator pos, Iterator first, Iterator last)
 
iterator insert (const_iterator pos, std::initializer_list< value_type > ilist)
 
template<class... Args>
iterator emplace (const_iterator pos, Args &&... args)
 
iterator erase (const_iterator pos)
 
iterator erase (const_iterator first, const_iterator last)
 
void push_back (const value_type &value)
 配列の末尾に要素を追加します。 More...
 
void push_back (value_type &&value)
 配列の末尾に要素を追加します。 More...
 
template<class... Args>
reference emplace_back (Args &&... args)
 
void pop_back ()
 配列の末尾の要素を削除します。 More...
 
void resize (size_type count)
 
void resize (size_type count, const value_type &value)
 
void swap (Array &other) noexcept
 他の配列と要素を入れ替えます。 More...
 
void release ()
 配列の要素を全て消去し、メモリも解放します。 More...
 
size_t size_bytes () const noexcept
 配列の要素の合計サイズ(バイト)を返します。 More...
 
void push_front (const value_type &value)
 配列の先頭に要素を追加します。 More...
 
void push_front (value_type &&value)
 配列の先頭に要素を追加します。 More...
 
void pop_front ()
 配列の先頭から要素を削除します。 More...
 
void pop_front_N (size_t n)
 配列の先頭から指定した個数の要素を削除します。 More...
 
void pop_back_N (size_t n)
 配列の末尾から指定した個数の要素を削除します。 More...
 
Arrayoperator<< (const value_type &value)
 配列の末尾に要素を追加します。 More...
 
Arrayoperator<< (value_type &&value)
 配列の末尾に要素を追加します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
auto operator>> (Fty f) const
 各要素に関数を適用します。 More...
 
template<class Fty = decltype(Identity), std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
bool all (Fty f=Identity) const
 全ての要素が条件を満たすかを返します。 More...
 
template<class Fty = decltype(Identity), std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
bool any (Fty f=Identity) const
 条件を満たす要素があるかを返します。 More...
 
Arrayappend (const Array &other_array)
 配列の末尾に別の配列を追加します。 More...
 
value_typechoice ()
 配列の要素を 1 つランダムに返します。 More...
 
const value_typechoice () const
 配列の要素を 1 つランダムに返します。 More...
 
SIV3D_CONCEPT_URBG value_typechoice (URBG &&rbg)
 指定した乱数エンジンを用いて、配列の要素を 1 つランダムに返します。 More...
 
const SIV3D_CONCEPT_URBG value_typechoice (URBG &&rbg) const
 指定した乱数エンジンを用いて、配列の要素を 1 つランダムに返します。 More...
 
SIV3D_CONCEPT_INTEGRAL Array choice (Int n) const
 配列の要素から指定した個数だけ重複なくランダムに選んで返します。 More...
 
template<class Size_t , class URBG , std::enable_if_t< std::is_integral_v< Size_t >> * = nullptr, std::enable_if_t< std::conjunction_v< std::is_invocable< URBG & >, std::is_unsigned< std::invoke_result_t< URBG & >>>> * = nullptr>
Array choice (Size_t n, URBG &&rbg) const
 指定した乱数エンジンを用いて、 配列の要素から指定した個数だけ重複なくランダムに選んで返します。 More...
 
Array< Array< value_type > > chunk (size_t n) const
 指定した個数の要素を持つ配列のグループに分割します。最後のグループの要素数は n 個未満になることがあります。 More...
 
size_t count (const value_type &value) const
 指定した値と等しい要素の個数を返します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
size_t count_if (Fty f) const
 条件を満たす要素の個数を返します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type & >> * = nullptr>
Arrayeach (Fty f)
 全ての要素を順番に引数にして関数を呼び出します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
const Arrayeach (Fty f) const
 全ての要素を順番に引数にして関数を呼び出します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, size_t, Type & >> * = nullptr>
Arrayeach_index (Fty f)
 全ての要素とそのインデックスを順番に引数にして関数を呼び出します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, size_t, Type >> * = nullptr>
const Arrayeach_index (Fty f) const
 全ての要素とそのインデックスを順番に引数にして関数を呼び出します。 More...
 
const value_typefetch (size_t index, const value_type &defaultValue) const
 指定したインデックスにある要素を返します。インデックスが範囲外の場合デフォルト値を返します。 More...
 
Arrayfill (const value_type &value)
 指定した値を全ての要素に代入します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array filter (Fty f) const
 指定した条件を満たす要素だけを集めた新しい配列を返します。 More...
 
Array< Array< value_type > > in_groups (size_t group) const
 要素を指定したグループ数に分割します。 More...
 
bool includes (const value_type &value) const
 指定した値と等しい要素があるかを返します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
bool includes_if (Fty f) const
 指定した条件を満たす要素があるかを返します。 More...
 
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
bool isSorted () const
 配列の要素が昇順にソートされているかを返します。 More...
 
String join (StringView sep=U", "_sv, StringView begin=U"{"_sv, StringView end=U"}"_sv) const
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
auto map (Fty f) const
 
template<class Fty = decltype(Identity), std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
bool none (Fty f=Identity) const
 条件を満たす要素が存在しないかを返します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
auto partition (Fty f)
 条件を満たすすべての要素を、条件を満たさないすべての要素より前に移動させます。 More...
 
template<class Fty , class R = std::decay_t<std::invoke_result_t<Fty, Type, Type>>>
auto reduce (Fty f, R init) const
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type, Type >> * = nullptr>
auto reduce1 (Fty f) const
 
Arrayremove (const value_type &value)
 
Array removed (const value_type &value) const &
 
Array removed (const value_type &value) &&
 
Arrayremove_at (size_t index)
 
Array removed_at (size_t index) const
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Arrayremove_if (Fty f)
 条件を満たす要素を配列から削除します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array removed_if (Fty f) const &
 条件を満たす要素を配列から削除した新しい配列を返します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array removed_if (Fty f) &&
 条件を満たす要素を配列から削除した新しい配列を返します。 More...
 
Arrayreplace (const value_type &oldValue, const value_type &newValue)
 
Array replaced (const value_type &oldValue, const value_type &newValue) const &
 
Array replaced (const value_type &oldValue, const value_type &newValue) &&
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Arrayreplace_if (Fty f, const value_type &newValue)
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array replaced_if (Fty f, const value_type &newValue) const &
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array replaced_if (Fty f, const value_type &newValue) &&
 
Arrayreverse ()
 配列の要素を逆順に並び替えます。 More...
 
Array reversed () const &
 配列の要素を逆順に並び替えた新しい配列を返します。 More...
 
Array reversed () &&
 配列の要素を逆順に並び替えた新しい配列を返します。 More...
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type & >> * = nullptr>
Arrayreverse_each (Fty f)
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
const Arrayreverse_each (Fty f) const
 
Arrayrotate (std::ptrdiff_t count=1)
 
Array rotated (std::ptrdiff_t count=1) const &
 
Array rotated (std::ptrdiff_t count=1) &&
 
template<class T = Type, std::enable_if_t< Meta::HasGreaterThan_v< T >> * = nullptr>
Arrayrsort ()
 
template<class T = Type, std::enable_if_t< Meta::HasGreaterThan_v< T >> * = nullptr>
Array rsorted () const &
 
template<class T = Type, std::enable_if_t< Meta::HasGreaterThan_v< T >> * = nullptr>
Array rsorted () &&
 
Arrayshuffle ()
 配列の要素の並び順をランダムにシャッフルします。 More...
 
SIV3D_CONCEPT_URBG Arrayshuffle (URBG &&rbg)
 
Array shuffled () const &
 
Array shuffled () &&
 
SIV3D_CONCEPT_URBG Array shuffled (URBG &&rbg) const &
 
SIV3D_CONCEPT_URBG Array shuffled (URBG &&rbg) &&
 
Array slice (size_t index) const
 
Array slice (size_t index, size_t length) const
 
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Arraysort ()
 
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Arraystable_sort ()
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Arraysort_by (Fty f)
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Arraystable_sort_by (Fty f)
 
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array sorted () const &
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
auto stable_partition (Fty f)
 相対順序を保ちながら、条件を満たすすべての要素を、条件を満たさないすべての要素より前に移動させます。 More...
 
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array stable_sorted () const &
 
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array sorted () &&
 
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array stable_sorted () &&
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array sorted_by (Fty f) const &
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array stable_sorted_by (Fty f) const &
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array sorted_by (Fty f) &&
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array stable_sorted_by (Fty f) &&
 
template<class T = Type, std::enable_if_t< Meta::HasPlus_v< T >> * = nullptr>
auto sum () const
 
template<class T = Type, std::enable_if_t< not Meta::HasPlus_v< T >> * = nullptr>
void sum () const =delete
 
template<class T = Type, std::enable_if_t< std::is_floating_point_v< T >> * = nullptr>
auto sumF () const
 
template<class T = Type, std::enable_if_t< not std::is_floating_point_v< T >> * = nullptr>
auto sumF () const =delete
 
Array take (size_t n) const
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array take_while (Fty f) const
 
Arraystable_unique ()
 
Array stable_uniqued () const
 
Arraysort_and_unique ()
 
Array sorted_and_uniqued () const &
 
Array sorted_and_uniqued () &&
 
Arrayunique_consecutive ()
 
Array uniqued_consecutive () const &
 
Array uniqued_consecutive () &&
 
Array values_at (std::initializer_list< size_t > indices) const
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
size_t parallel_count_if (Fty f) const
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type & >> * = nullptr>
void parallel_each (Fty f)
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
void parallel_each (Fty f) const
 
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
auto parallel_map (Fty f) const
 

Static Public Member Functions

template<class Fty , std::enable_if_t< std::is_invocable_r_v< Type, Fty >> * = nullptr>
static Array Generate (size_type size, Fty generator)
 
template<class Fty , std::enable_if_t< std::is_invocable_r_v< Type, Fty, size_t >> * = nullptr>
static Array IndexedGenerate (size_type size, Fty indexedGenerator)
 

Friends

std::ostream & operator<< (std::ostream &output, const Array &value)
 
std::wostream & operator<< (std::wostream &output, const Array &value)
 
std::basic_ostream< char32 > & operator<< (std::basic_ostream< char32 > &output, const Array &value)
 
void Formatter (FormatData &formatData, const Array &value)
 

Detailed Description

template<class Type, class Allocator = std::allocator<Type>>
class s3d::Array< Type, Allocator >

動的配列

Template Parameters
Type要素の型
Allocatorアロケータ

Member Typedef Documentation

◆ allocator_type

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::allocator_type = typename container_type::allocator_type

アロケータの型

◆ const_iterator

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::const_iterator = typename container_type::const_iterator

const イテレータ型

◆ const_pointer

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::const_pointer = typename container_type::const_pointer

要素の const ポインタ型

◆ const_reference

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::const_reference = typename container_type::const_reference

要素の const 参照型

◆ const_reverse_iterator

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::const_reverse_iterator = typename container_type::const_reverse_iterator

const リバース・イテレータ型

◆ container_type

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::container_type = std::vector<Type, Allocator>

◆ difference_type

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::difference_type = typename container_type::difference_type

2 つの要素間の距離を表現する型

◆ iterator

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::iterator = typename container_type::iterator

イテレータ型

◆ pointer

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::pointer = typename container_type::pointer

要素のポインタ型

◆ reference

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::reference = typename container_type::reference

要素の参照型

◆ reverse_iterator

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::reverse_iterator = typename container_type::reverse_iterator

リバース・イテレータ型

◆ size_type

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::size_type = typename container_type::size_type

要素の個数を表現する型

◆ value_type

template<class Type , class Allocator = std::allocator<Type>>
using s3d::Array< Type, Allocator >::value_type = typename container_type::value_type

配列の要素の型

Constructor & Destructor Documentation

◆ Array() [1/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( )
default

デフォルトコンストラクタ

◆ Array() [2/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( const Array< Type, Allocator > &  )
default

コピーコンストラクタ

Parameters
otherコピーする配列

◆ Array() [3/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( Array< Type, Allocator > &&  )
default

ムーブコンストラクタ

Parameters
otherムーブする配列

◆ Array() [4/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( const container_type other)

std::vector からのコピーで配列を作成します。

Parameters
otherコピーする配列

◆ Array() [5/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( container_type &&  other)

std::vector からのムーブで配列を作成します。

Parameters
otherムーブする配列

◆ Array() [6/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( const Allocator alloc)
explicitnoexcept
Parameters
alloc

◆ Array() [7/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( size_type  count,
const value_type value,
const Allocator alloc = Allocator{} 
)

count 個の value で配列を作成します。

Parameters
count個数
value要素
allocアロケータ

◆ Array() [8/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( size_type  count,
const Allocator alloc = Allocator{} 
)
explicit

count 個の Type() で配列を作成します。

Parameters
count個数
allocアロケータ

◆ Array() [9/18]

template<class Type , class Allocator = std::allocator<Type>>
template<class Iterator >
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( Iterator  first,
Iterator  last,
const Allocator alloc = Allocator{} 
)

イテレータが指す範囲の要素から配列を作成します。

Template Parameters
Iteratorイテレータ
Parameters
first範囲の開始位置を指すイテレータ
last範囲の終端位置を指すイテレータ
allocアロケータ

◆ Array() [10/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( const Array< Type, Allocator > &  other,
const Allocator alloc 
)
Parameters
other
alloc

◆ Array() [11/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( Array< Type, Allocator > &&  other,
const Allocator alloc 
)
Parameters
other
alloc

◆ Array() [12/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( const container_type other,
const Allocator alloc 
)
Parameters
other
alloc

◆ Array() [13/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( container_type &&  other,
const Allocator alloc 
)
Parameters
other
alloc

◆ Array() [14/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( std::initializer_list< value_type ilist,
const Allocator alloc = Allocator{} 
)

初期化リストから配列を作成します。

Parameters
ilist初期化リスト
allocアロケータ

◆ Array() [15/18]

template<class Type , class Allocator = std::allocator<Type>>
template<class ArrayIsh , std::enable_if_t< Meta::HasAsArray< ArrayIsh >::value > * = nullptr>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( ArrayIsh &&  a)
explicit

asArray() を持つ型から配列を作成します。

Template Parameters
ArrayIshasArray() を持つ型
Parameters
aasArray() を持つ型のオブジェクト

◆ Array() [16/18]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< Type, Fty >> * = nullptr>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( size_type  size,
Arg::generator_< Fty >  generator 
)

ジェネレータ関数を使って配列を作成します。

Template Parameters
Ftyジェネレータ関数の型
Parameters
size作成する配列の要素数
generatorジェネレータ関数

◆ Array() [17/18]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< Type, Fty, size_t >> * = nullptr>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( size_type  size,
Arg::indexedGenerator_< Fty >  indexedGenerator 
)

インデックス指定ジェネレータ関数を使って配列を作成します。

Template Parameters
Ftyジェネレータ関数の型
Parameters
size作成する配列の要素数
indexedGeneratorインデックス指定ジェネレータ関数

◆ Array() [18/18]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_NODISCARD_CXX20 s3d::Array< Type, Allocator >::Array ( Arg::reserve_< size_type size)
explicit

配列を作成し、reserve() します。

Parameters
sizereserve() するサイズ

Member Function Documentation

◆ all()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty = decltype(Identity), std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
bool s3d::Array< Type, Allocator >::all ( Fty  f = Identity) const

全ての要素が条件を満たすかを返します。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件を記述した関数
Returns
全ての要素が条件を満たすか、配列が空の場合 true, それ以外の場合は false

◆ any()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty = decltype(Identity), std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
bool s3d::Array< Type, Allocator >::any ( Fty  f = Identity) const

条件を満たす要素があるかを返します。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件を記述した関数
Returns
条件を満たす要素が 1 つでもあれば true, それ以外の場合は false

◆ append()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::append ( const Array< Type, Allocator > &  other_array)

配列の末尾に別の配列を追加します。

Parameters
other_array追加する配列
Returns
*this

◆ assign() [1/3]

template<class Type , class Allocator = std::allocator<Type>>
template<class Iterator >
Array& s3d::Array< Type, Allocator >::assign ( Iterator  first,
Iterator  last 
)

◆ assign() [2/3]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::assign ( size_type  count,
const value_type value 
)

◆ assign() [3/3]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::assign ( std::initializer_list< value_type ilist)

◆ at() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
value_type& s3d::Array< Type, Allocator >::at ( size_t  index)

要素にアクセスします。

Parameters
index要素へのインデックス
Returns
要素への参照

◆ at() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
const value_type& s3d::Array< Type, Allocator >::at ( size_t  index) const

要素にアクセスします。

Parameters
index要素へのインデックス
Exceptions
std::out_of_range範囲外アクセスの場合 throw
Returns
要素への参照

◆ back() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
reference s3d::Array< Type, Allocator >::back ( )

末尾の要素への参照を返します。

Returns
末尾の要素への参照

◆ back() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
const_reference s3d::Array< Type, Allocator >::back ( ) const

末尾の要素への参照を返します。

Returns
末尾の要素への参照

◆ begin() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
const_iterator s3d::Array< Type, Allocator >::begin ( ) const
noexcept

配列の先頭位置を指すイテレータを返します。

Returns
配列の先頭位置を指すイテレータ

◆ begin() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
iterator s3d::Array< Type, Allocator >::begin ( )
noexcept

配列の先頭位置を指すイテレータを返します。

Returns
配列の先頭位置を指すイテレータ

◆ capacity()

template<class Type , class Allocator = std::allocator<Type>>
size_type s3d::Array< Type, Allocator >::capacity ( ) const
noexcept

メモリの再確保無しで格納できる要素数を返します。

Returns
メモリの再確保無しで格納できる要素数

◆ cbegin()

template<class Type , class Allocator = std::allocator<Type>>
const_iterator s3d::Array< Type, Allocator >::cbegin ( ) const
noexcept

配列の先頭位置を指すイテレータを返します。

Returns
配列の先頭位置を指すイテレータ

◆ cend()

template<class Type , class Allocator = std::allocator<Type>>
const_iterator s3d::Array< Type, Allocator >::cend ( ) const
noexcept

配列の終端位置を指すイテレータを返します。

Remarks
有効な範囲は [begin, end) であるため、この位置に要素は存在しません
Returns
配列の終端位置を指すイテレータ

◆ choice() [1/6]

template<class Type , class Allocator = std::allocator<Type>>
value_type& s3d::Array< Type, Allocator >::choice ( )

配列の要素を 1 つランダムに返します。

Returns
配列からランダムに選ばれた要素への参照

◆ choice() [2/6]

template<class Type , class Allocator = std::allocator<Type>>
const value_type& s3d::Array< Type, Allocator >::choice ( ) const

配列の要素を 1 つランダムに返します。

Returns
配列からランダムに選ばれた要素への参照

◆ choice() [3/6]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_CONCEPT_INTEGRAL Array s3d::Array< Type, Allocator >::choice ( Int  n) const

配列の要素から指定した個数だけ重複なくランダムに選んで返します。

Template Parameters
Int個数に使う整数型
Parameters
n選択する個数
Returns
ランダムに選ばれた要素の配列

◆ choice() [4/6]

template<class Type , class Allocator = std::allocator<Type>>
template<class Size_t , class URBG , std::enable_if_t< std::is_integral_v< Size_t >> * = nullptr, std::enable_if_t< std::conjunction_v< std::is_invocable< URBG & >, std::is_unsigned< std::invoke_result_t< URBG & >>>> * = nullptr>
Array s3d::Array< Type, Allocator >::choice ( Size_t  n,
URBG &&  rbg 
) const

指定した乱数エンジンを用いて、 配列の要素から指定した個数だけ重複なくランダムに選んで返します。

Template Parameters
Size_t個数に使う整数型
Parameters
n選択する個数
rbg使用する乱数エンジン
Returns
ランダムに選ばれた要素の配列

◆ choice() [5/6]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_CONCEPT_URBG value_type& s3d::Array< Type, Allocator >::choice ( URBG &&  rbg)

指定した乱数エンジンを用いて、配列の要素を 1 つランダムに返します。

Template Parameters
URBG使用する乱数エンジンの型
Parameters
rbg使用する乱数エンジン
Returns
配列からランダムに選ばれた要素への参照

◆ choice() [6/6]

template<class Type , class Allocator = std::allocator<Type>>
const SIV3D_CONCEPT_URBG value_type& s3d::Array< Type, Allocator >::choice ( URBG &&  rbg) const

指定した乱数エンジンを用いて、配列の要素を 1 つランダムに返します。

Template Parameters
URBG使用する乱数エンジンの型
Parameters
rbg使用する乱数エンジン
Returns
配列からランダムに選ばれた要素への参照

◆ chunk()

template<class Type , class Allocator = std::allocator<Type>>
Array<Array<value_type> > s3d::Array< Type, Allocator >::chunk ( size_t  n) const

指定した個数の要素を持つ配列のグループに分割します。最後のグループの要素数は n 個未満になることがあります。

Parameters
n1 つのグループが持つ要素数
Remarks
{ 0, 1, 2, 3, 4, 5, 6 } を 3 個の要素を持つ配列のグループに分割すると { { 0, 1, 2 }, { 3, 4, 5 }, { 6 }} になります。
Returns
分割されたグループ

◆ clear()

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::clear ( )
noexcept

◆ count()

template<class Type , class Allocator = std::allocator<Type>>
size_t s3d::Array< Type, Allocator >::count ( const value_type value) const

指定した値と等しい要素の個数を返します。

Parameters
value検索する値
Returns
指定した値と等しい要素の個数

◆ count_if()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
size_t s3d::Array< Type, Allocator >::count_if ( Fty  f) const

条件を満たす要素の個数を返します。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件を記述した関数
Returns
条件を満たす要素の個数

◆ crbegin()

template<class Type , class Allocator = std::allocator<Type>>
const_reverse_iterator s3d::Array< Type, Allocator >::crbegin ( ) const
noexcept

配列の末尾位置を指すリバース・イテレータを返します。

Returns
配列の末尾位置を指すリバース・イテレータ

◆ crend()

template<class Type , class Allocator = std::allocator<Type>>
const_reverse_iterator s3d::Array< Type, Allocator >::crend ( ) const
noexcept

配列の先端位置を指すリバース・イテレータを返します。

Remarks
有効な範囲は [rbegin, rend) であるため、この位置に要素は存在しません
Returns
配列の先端位置を指すリバース・イテレータ

◆ data() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
const value_type* s3d::Array< Type, Allocator >::data ( ) const
noexcept

先頭の要素を指すポインタを返します。

Returns
先頭の要素を指すポインタ

◆ data() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
value_type* s3d::Array< Type, Allocator >::data ( )
noexcept

先頭の要素を指すポインタを返します。

Returns
先頭の要素を指すポインタ

◆ each() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type & >> * = nullptr>
Array& s3d::Array< Type, Allocator >::each ( Fty  f)

全ての要素を順番に引数にして関数を呼び出します。

Template Parameters
Fty呼び出す関数の型
Parameters
f呼び出す関数
Remarks
for (auto& x : xs) f(x); と同じです。
Returns
*this

◆ each() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
const Array& s3d::Array< Type, Allocator >::each ( Fty  f) const

全ての要素を順番に引数にして関数を呼び出します。

Template Parameters
Fty呼び出す関数の型
Parameters
f呼び出す関数
Remarks
for (const auto& x : xs) f(x); と同じです。
Returns
*this

◆ each_index() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, size_t, Type & >> * = nullptr>
Array& s3d::Array< Type, Allocator >::each_index ( Fty  f)

全ての要素とそのインデックスを順番に引数にして関数を呼び出します。

Template Parameters
Fty呼び出す関数の型
Parameters
f呼び出す関数
Remarks
for (size_t i = 0; auto& x : xs) f(i++, x); と同じです。
Returns
*this

◆ each_index() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, size_t, Type >> * = nullptr>
const Array& s3d::Array< Type, Allocator >::each_index ( Fty  f) const

全ての要素とそのインデックスを順番に引数にして関数を呼び出します。

Template Parameters
Fty呼び出す関数の型
Parameters
f呼び出す関数
Remarks
for (size_t i = 0; const auto& x : xs) f(i++, x); と同じです。
Returns
*this

◆ emplace()

template<class Type , class Allocator = std::allocator<Type>>
template<class... Args>
iterator s3d::Array< Type, Allocator >::emplace ( const_iterator  pos,
Args &&...  args 
)

◆ emplace_back()

template<class Type , class Allocator = std::allocator<Type>>
template<class... Args>
reference s3d::Array< Type, Allocator >::emplace_back ( Args &&...  args)

◆ empty()

template<class Type , class Allocator = std::allocator<Type>>
bool s3d::Array< Type, Allocator >::empty ( ) const
noexcept

配列が空であるかを返します。

Returns
配列が空である場合 true, それ以外の場合は false

◆ end() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
const_iterator s3d::Array< Type, Allocator >::end ( ) const
noexcept

配列の終端位置を指すイテレータを返します。

Remarks
有効な範囲は [begin, end) であるため、この位置に要素は存在しません
Returns
配列の終端位置を指すイテレータ

◆ end() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
iterator s3d::Array< Type, Allocator >::end ( )
noexcept

配列の終端位置を指すイテレータを返します。

Remarks
有効な範囲は [begin, end) であるため、この位置に要素は存在しません
Returns
配列の終端位置を指すイテレータ

◆ erase() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
iterator s3d::Array< Type, Allocator >::erase ( const_iterator  first,
const_iterator  last 
)

◆ erase() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
iterator s3d::Array< Type, Allocator >::erase ( const_iterator  pos)

◆ fetch()

template<class Type , class Allocator = std::allocator<Type>>
const value_type& s3d::Array< Type, Allocator >::fetch ( size_t  index,
const value_type defaultValue 
) const

指定したインデックスにある要素を返します。インデックスが範囲外の場合デフォルト値を返します。

Parameters
indexインデックス
defaultValueインデックスが範囲外の場合に返すデフォルト値
Returns
指定したインデックスにある要素、範囲外の場合 defaultValue

◆ fill()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::fill ( const value_type value)

指定した値を全ての要素に代入します。

Parameters
value代入する値
Returns
*this

◆ filter()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::filter ( Fty  f) const

指定した条件を満たす要素だけを集めた新しい配列を返します。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件を記述した関数
Remarks
結果において、要素の前後関係は維持されます。
Returns
指定した条件を満たす要素を集めた新しい配列

◆ front() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
reference s3d::Array< Type, Allocator >::front ( )

先頭の要素への参照を返します。

Returns
先頭の要素への参照

◆ front() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
const_reference s3d::Array< Type, Allocator >::front ( ) const

先頭の要素への参照を返します。

Returns
先頭の要素への参照

◆ Generate()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< Type, Fty >> * = nullptr>
static Array s3d::Array< Type, Allocator >::Generate ( size_type  size,
Fty  generator 
)
static
Template Parameters
Fty
Parameters
size
generator
Returns

◆ get_allocator()

template<class Type , class Allocator = std::allocator<Type>>
allocator_type s3d::Array< Type, Allocator >::get_allocator ( ) const
noexcept

◆ getContainer()

template<class Type , class Allocator = std::allocator<Type>>
const container_type& s3d::Array< Type, Allocator >::getContainer ( ) const
noexcept

◆ in_groups()

template<class Type , class Allocator = std::allocator<Type>>
Array<Array<value_type> > s3d::Array< Type, Allocator >::in_groups ( size_t  group) const

要素を指定したグループ数に分割します。

Parameters
groupグループ数
Remarks
{ 0, 1, 2, 3, 4, 5, 6 } を 3 グループに分割すると { { 0, 1, 2 }, { 3, 4 }, { 5, 6 }} になります。
Returns
分割したグループ

◆ includes()

template<class Type , class Allocator = std::allocator<Type>>
bool s3d::Array< Type, Allocator >::includes ( const value_type value) const

指定した値と等しい要素があるかを返します。

Parameters
value検索する値
Returns
指定した値と等しい要素がある場合 true, それ以外の場合は false

◆ includes_if()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
bool s3d::Array< Type, Allocator >::includes_if ( Fty  f) const

指定した条件を満たす要素があるかを返します。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件を記述した関数
Remarks
.any(f) と同じです。
Returns
条件を満たす要素が 1 つでもあれば true, それ以外の場合は false

◆ IndexedGenerate()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< Type, Fty, size_t >> * = nullptr>
static Array s3d::Array< Type, Allocator >::IndexedGenerate ( size_type  size,
Fty  indexedGenerator 
)
static
Template Parameters
Fty
Parameters
size
indexedGenerator
Returns

◆ insert() [1/5]

template<class Type , class Allocator = std::allocator<Type>>
iterator s3d::Array< Type, Allocator >::insert ( const_iterator  pos,
const value_type value 
)

◆ insert() [2/5]

template<class Type , class Allocator = std::allocator<Type>>
template<class Iterator >
iterator s3d::Array< Type, Allocator >::insert ( const_iterator  pos,
Iterator  first,
Iterator  last 
)

◆ insert() [3/5]

template<class Type , class Allocator = std::allocator<Type>>
iterator s3d::Array< Type, Allocator >::insert ( const_iterator  pos,
size_type  count,
const value_type value 
)

◆ insert() [4/5]

template<class Type , class Allocator = std::allocator<Type>>
iterator s3d::Array< Type, Allocator >::insert ( const_iterator  pos,
std::initializer_list< value_type ilist 
)

◆ insert() [5/5]

template<class Type , class Allocator = std::allocator<Type>>
iterator s3d::Array< Type, Allocator >::insert ( const_iterator  pos,
value_type &&  value 
)

◆ isEmpty()

template<class Type , class Allocator = std::allocator<Type>>
bool s3d::Array< Type, Allocator >::isEmpty ( ) const
noexcept

配列が空であるかを返します。

Remarks
empty() と同じです。
Returns
配列が空である場合 true, それ以外の場合は false

◆ isSorted()

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
bool s3d::Array< Type, Allocator >::isSorted ( ) const

配列の要素が昇順にソートされているかを返します。

Returns
配列の要素が昇順にソートされている場合 true, それ以外の場合は false

◆ join()

template<class Type , class Allocator = std::allocator<Type>>
String s3d::Array< Type, Allocator >::join ( StringView  sep = U", "_sv,
StringView  begin = U"{"_sv,
StringView  end = U"}"_sv 
) const
Parameters
sep
begin
end
Returns

◆ map()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
auto s3d::Array< Type, Allocator >::map ( Fty  f) const
Template Parameters
Fty
Parameters
f
Returns

◆ max_size()

template<class Type , class Allocator = std::allocator<Type>>
size_type s3d::Array< Type, Allocator >::max_size ( ) const
noexcept

配列の要素数の最大値を返します。

Returns
配列の要素数の最大値

◆ none()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty = decltype(Identity), std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
bool s3d::Array< Type, Allocator >::none ( Fty  f = Identity) const

条件を満たす要素が存在しないかを返します。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件を記述した関数
Returns
条件を満たす要素数が 0 個の場合 true, それ以外の場合は false

◆ operator bool()

template<class Type , class Allocator = std::allocator<Type>>
s3d::Array< Type, Allocator >::operator bool ( ) const
explicitnoexcept

配列が要素を持っているかを返します。

Returns
配列が要素を持っている場合 true, それ以外の場合は false

◆ operator container_type()

template<class Type , class Allocator = std::allocator<Type>>
s3d::Array< Type, Allocator >::operator container_type ( ) const
noexcept

◆ operator<<() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::operator<< ( const value_type value)

配列の末尾に要素を追加します。

Parameters
value追加する値
Returns
*this

◆ operator<<() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::operator<< ( value_type &&  value)

配列の末尾に要素を追加します。

Parameters
value追加する値
Returns
*this

◆ operator=() [1/6]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::operator= ( Array< Type, Allocator > &&  )
default

ムーブ代入演算子

Parameters
otherムーブする配列
Returns
*this

◆ operator=() [2/6]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::operator= ( const Array< Type, Allocator > &  )
default

コピー代入演算子

Parameters
otherコピーする配列
Returns
*this

◆ operator=() [3/6]

template<class Type , class Allocator = std::allocator<Type>>
template<class ArrayIsh , std::enable_if_t< Meta::HasAsArray< ArrayIsh >::value > * = nullptr>
Array& s3d::Array< Type, Allocator >::operator= ( const ArrayIsh &  a)

◆ operator=() [4/6]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::operator= ( const container_type other)

◆ operator=() [5/6]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::operator= ( container_type &&  other)

◆ operator=() [6/6]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::operator= ( std::initializer_list< value_type ilist)

◆ operator>>()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
auto s3d::Array< Type, Allocator >::operator>> ( Fty  f) const

各要素に関数を適用します。

Template Parameters
Fty適用する関数の型
Parameters
f適用する関数
Remarks
Fty が戻り値を持たない場合 .each(f), 戻り値を持つ場合は.map(f)` と同じです。
Returns
各要素に関数を適用した結果の配列。Fty が戻り値を持たない場合 void

◆ operator[]() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
value_type& s3d::Array< Type, Allocator >::operator[] ( size_t  index)

要素にアクセスします。

Parameters
index要素へのインデックス
Returns
要素への参照

◆ operator[]() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
const value_type& s3d::Array< Type, Allocator >::operator[] ( size_t  index) const

要素にアクセスします。

Parameters
index要素へのインデックス
Returns
要素への参照

◆ parallel_count_if()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
size_t s3d::Array< Type, Allocator >::parallel_count_if ( Fty  f) const
Template Parameters
Fty
Parameters
f
Returns

◆ parallel_each() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type & >> * = nullptr>
void s3d::Array< Type, Allocator >::parallel_each ( Fty  f)
Template Parameters
Fty
Parameters
f

◆ parallel_each() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
void s3d::Array< Type, Allocator >::parallel_each ( Fty  f) const
Template Parameters
Fty
Parameters
f

◆ parallel_map()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
auto s3d::Array< Type, Allocator >::parallel_map ( Fty  f) const
Template Parameters
Fty
Parameters
f
Returns

◆ partition()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
auto s3d::Array< Type, Allocator >::partition ( Fty  f)

条件を満たすすべての要素を、条件を満たさないすべての要素より前に移動させます。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件を記述した関数
Returns
区分化された境界を指すイテレータ

◆ pop_back()

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::pop_back ( )

配列の末尾の要素を削除します。

Remarks
配列が空の時に呼んではいけません。

◆ pop_back_N()

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::pop_back_N ( size_t  n)

配列の末尾から指定した個数の要素を削除します。

Parameters
n削除する個数
Remarks
n が size() より多い場合は全ての要素を削除します。

◆ pop_front()

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::pop_front ( )

配列の先頭から要素を削除します。

◆ pop_front_N()

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::pop_front_N ( size_t  n)

配列の先頭から指定した個数の要素を削除します。

Parameters
n削除する個数
Remarks
n が size() より多い場合は全ての要素を削除します。

◆ push_back() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::push_back ( const value_type value)

配列の末尾に要素を追加します。

Parameters
value追加する値

◆ push_back() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::push_back ( value_type &&  value)

配列の末尾に要素を追加します。

Parameters
value追加する値

◆ push_front() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::push_front ( const value_type value)

配列の先頭に要素を追加します。

Parameters
value追加する値

◆ push_front() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::push_front ( value_type &&  value)

配列の先頭に要素を追加します。

Parameters
value追加する値

◆ rbegin() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
const_reverse_iterator s3d::Array< Type, Allocator >::rbegin ( ) const
noexcept

配列の末尾位置を指すリバース・イテレータを返します。

Returns
配列の末尾位置を指すリバース・イテレータ

◆ rbegin() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
reverse_iterator s3d::Array< Type, Allocator >::rbegin ( )
noexcept

配列の末尾位置を指すリバース・イテレータを返します。

Returns
配列の末尾位置を指すリバース・イテレータ

◆ reduce()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , class R = std::decay_t<std::invoke_result_t<Fty, Type, Type>>>
auto s3d::Array< Type, Allocator >::reduce ( Fty  f,
init 
) const
Template Parameters
Fty
R
Parameters
f
init
Returns

◆ reduce1()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type, Type >> * = nullptr>
auto s3d::Array< Type, Allocator >::reduce1 ( Fty  f) const
Template Parameters
Fty
Parameters
f
Returns

◆ release()

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::release ( )

配列の要素を全て消去し、メモリも解放します。

◆ remove()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::remove ( const value_type value)
Parameters
value
Returns

◆ remove_at()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::remove_at ( size_t  index)
Parameters
index
Returns

◆ remove_if()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array& s3d::Array< Type, Allocator >::remove_if ( Fty  f)

条件を満たす要素を配列から削除します。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件
Returns
*this

◆ removed() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::removed ( const value_type value) &&
Parameters
value
Returns

◆ removed() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::removed ( const value_type value) const &
Parameters
value
Returns

◆ removed_at()

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::removed_at ( size_t  index) const
Parameters
index
Returns

◆ removed_if() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::removed_if ( Fty  f) &&

条件を満たす要素を配列から削除した新しい配列を返します。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件
Returns
新しい配列

◆ removed_if() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::removed_if ( Fty  f) const &

条件を満たす要素を配列から削除した新しい配列を返します。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件
Returns
新しい配列

◆ rend() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
const_reverse_iterator s3d::Array< Type, Allocator >::rend ( ) const
noexcept

配列の先端位置を指すリバース・イテレータを返します。

Remarks
有効な範囲は [rbegin, rend) であるため、この位置に要素は存在しません
Returns
配列の先端位置を指すリバース・イテレータ

◆ rend() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
reverse_iterator s3d::Array< Type, Allocator >::rend ( )
noexcept

配列の先端位置を指すリバース・イテレータを返します。

Remarks
有効な範囲は [rbegin, rend) であるため、この位置に要素は存在しません
Returns
配列の先端位置を指すリバース・イテレータ

◆ replace()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::replace ( const value_type oldValue,
const value_type newValue 
)
Parameters
oldValue
newValue
Returns

◆ replace_if()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array& s3d::Array< Type, Allocator >::replace_if ( Fty  f,
const value_type newValue 
)
Template Parameters
Fty
Parameters
f
newValue
Returns

◆ replaced() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::replaced ( const value_type oldValue,
const value_type newValue 
) &&
Parameters
oldValue
newValue
Returns

◆ replaced() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::replaced ( const value_type oldValue,
const value_type newValue 
) const &
Parameters
oldValue
newValue
Returns

◆ replaced_if() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::replaced_if ( Fty  f,
const value_type newValue 
) &&
Template Parameters
Fty
Parameters
f
newValue
Returns

◆ replaced_if() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::replaced_if ( Fty  f,
const value_type newValue 
) const &
Template Parameters
Fty
Parameters
f
newValue
Returns

◆ reserve()

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::reserve ( size_type  n)

要素数 n までメモリの再確保無しで格納できるよう、必要に応じてメモリを再確保します

Parameters
nメモリを確保する要素数

◆ resize() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::resize ( size_type  count)

◆ resize() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::resize ( size_type  count,
const value_type value 
)

◆ reverse()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::reverse ( )

配列の要素を逆順に並び替えます。

Returns
*this

◆ reverse_each() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type & >> * = nullptr>
Array& s3d::Array< Type, Allocator >::reverse_each ( Fty  f)
Template Parameters
Fty
Parameters
f
Returns

◆ reverse_each() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_v< Fty, Type >> * = nullptr>
const Array& s3d::Array< Type, Allocator >::reverse_each ( Fty  f) const
Template Parameters
Fty
Parameters
f
Returns

◆ reversed() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::reversed ( ) &&

配列の要素を逆順に並び替えた新しい配列を返します。

Returns
新しい配列

◆ reversed() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::reversed ( ) const &

配列の要素を逆順に並び替えた新しい配列を返します。

Returns
新しい配列

◆ rotate()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::rotate ( std::ptrdiff_t  count = 1)
Parameters
count
Returns

◆ rotated() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::rotated ( std::ptrdiff_t  count = 1) &&
Parameters
count
Returns

◆ rotated() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::rotated ( std::ptrdiff_t  count = 1) const &
Parameters
count
Returns

◆ rsort()

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasGreaterThan_v< T >> * = nullptr>
Array& s3d::Array< Type, Allocator >::rsort ( )
Returns

◆ rsorted() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasGreaterThan_v< T >> * = nullptr>
Array s3d::Array< Type, Allocator >::rsorted ( ) &&
Returns

◆ rsorted() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasGreaterThan_v< T >> * = nullptr>
Array s3d::Array< Type, Allocator >::rsorted ( ) const &
Returns

◆ shrink_to_fit()

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::shrink_to_fit ( )

capacity()size() まで減らすようにします。

Remarks
この関数の呼び出しの後で capacity() == size() になるとは限りません。

◆ shuffle() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::shuffle ( )

配列の要素の並び順をランダムにシャッフルします。

Returns
*this

◆ shuffle() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_CONCEPT_URBG Array& s3d::Array< Type, Allocator >::shuffle ( URBG &&  rbg)
Parameters
rbg
Returns

◆ shuffled() [1/4]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::shuffled ( ) &&
Returns

◆ shuffled() [2/4]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::shuffled ( ) const &
Returns

◆ shuffled() [3/4]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_CONCEPT_URBG Array s3d::Array< Type, Allocator >::shuffled ( URBG &&  rbg) &&
Template Parameters
URBG
Parameters
rbg
Returns

◆ shuffled() [4/4]

template<class Type , class Allocator = std::allocator<Type>>
SIV3D_CONCEPT_URBG Array s3d::Array< Type, Allocator >::shuffled ( URBG &&  rbg) const &
Template Parameters
URBG
Parameters
rbg
Returns

◆ size()

template<class Type , class Allocator = std::allocator<Type>>
size_type s3d::Array< Type, Allocator >::size ( ) const
noexcept

配列の要素数を返します。

Returns
配列の要素数

◆ size_bytes()

template<class Type , class Allocator = std::allocator<Type>>
size_t s3d::Array< Type, Allocator >::size_bytes ( ) const
noexcept

配列の要素の合計サイズ(バイト)を返します。

Returns
配列の要素の合計サイズ(バイト)

◆ slice() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::slice ( size_t  index) const
Parameters
index
Returns

◆ slice() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::slice ( size_t  index,
size_t  length 
) const
Parameters
index
length
Returns

◆ sort()

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array& s3d::Array< Type, Allocator >::sort ( )
Returns

◆ sort_and_unique()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::sort_and_unique ( )
Returns

◆ sort_by()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array& s3d::Array< Type, Allocator >::sort_by ( Fty  f)
Template Parameters
Fty
Parameters
f
Returns

◆ sorted() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array s3d::Array< Type, Allocator >::sorted ( ) &&
Returns

◆ sorted() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array s3d::Array< Type, Allocator >::sorted ( ) const &
Returns

◆ sorted_and_uniqued() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::sorted_and_uniqued ( ) &&
Returns

◆ sorted_and_uniqued() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::sorted_and_uniqued ( ) const &
Returns

◆ sorted_by() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::sorted_by ( Fty  f) &&
Template Parameters
Fty
Parameters
f
Returns

◆ sorted_by() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::sorted_by ( Fty  f) const &
Template Parameters
Fty
Parameters
f
Returns

◆ stable_partition()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
auto s3d::Array< Type, Allocator >::stable_partition ( Fty  f)

相対順序を保ちながら、条件を満たすすべての要素を、条件を満たさないすべての要素より前に移動させます。

Template Parameters
Fty条件を記述した関数の型
Parameters
f条件を記述した関数
Returns
区分化された境界を指すイテレータ

◆ stable_sort()

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array& s3d::Array< Type, Allocator >::stable_sort ( )
Returns

◆ stable_sort_by()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array& s3d::Array< Type, Allocator >::stable_sort_by ( Fty  f)
Template Parameters
Fty
Parameters
f
Returns

◆ stable_sorted() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array s3d::Array< Type, Allocator >::stable_sorted ( ) &&
Returns

◆ stable_sorted() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasLessThan_v< T >> * = nullptr>
Array s3d::Array< Type, Allocator >::stable_sorted ( ) const &
Returns

◆ stable_sorted_by() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::stable_sorted_by ( Fty  f) &&
Template Parameters
Fty
Parameters
f
Returns

◆ stable_sorted_by() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::stable_sorted_by ( Fty  f) const &
Template Parameters
Fty
Parameters
f
Returns

◆ stable_unique()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::stable_unique ( )
Returns

◆ stable_uniqued()

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::stable_uniqued ( ) const
Returns

◆ sum() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< Meta::HasPlus_v< T >> * = nullptr>
auto s3d::Array< Type, Allocator >::sum ( ) const
Template Parameters
T
Returns

◆ sum() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< not Meta::HasPlus_v< T >> * = nullptr>
void s3d::Array< Type, Allocator >::sum ( ) const
delete
Template Parameters
T

◆ sumF() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< std::is_floating_point_v< T >> * = nullptr>
auto s3d::Array< Type, Allocator >::sumF ( ) const
Template Parameters
T
Returns

◆ sumF() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
template<class T = Type, std::enable_if_t< not std::is_floating_point_v< T >> * = nullptr>
auto s3d::Array< Type, Allocator >::sumF ( ) const
delete
Template Parameters
T
Returns

◆ swap()

template<class Type , class Allocator = std::allocator<Type>>
void s3d::Array< Type, Allocator >::swap ( Array< Type, Allocator > &  other)
noexcept

他の配列と要素を入れ替えます。

Parameters
other入れ替える配列

◆ take()

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::take ( size_t  n) const
Parameters
n
Returns

◆ take_while()

template<class Type , class Allocator = std::allocator<Type>>
template<class Fty , std::enable_if_t< std::is_invocable_r_v< bool, Fty, Type >> * = nullptr>
Array s3d::Array< Type, Allocator >::take_while ( Fty  f) const
Template Parameters
Fty
Parameters
f
Returns

◆ unique_consecutive()

template<class Type , class Allocator = std::allocator<Type>>
Array& s3d::Array< Type, Allocator >::unique_consecutive ( )
Returns

◆ uniqued_consecutive() [1/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::uniqued_consecutive ( ) &&
Returns

◆ uniqued_consecutive() [2/2]

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::uniqued_consecutive ( ) const &
Returns

◆ values_at()

template<class Type , class Allocator = std::allocator<Type>>
Array s3d::Array< Type, Allocator >::values_at ( std::initializer_list< size_t >  indices) const
Parameters
indices
Returns

Friends And Related Function Documentation

◆ Formatter

template<class Type , class Allocator = std::allocator<Type>>
void Formatter ( FormatData formatData,
const Array< Type, Allocator > &  value 
)
friend
Parameters
formatData
value

◆ operator<< [1/3]

template<class Type , class Allocator = std::allocator<Type>>
std::basic_ostream<char32>& operator<< ( std::basic_ostream< char32 > &  output,
const Array< Type, Allocator > &  value 
)
friend
Parameters
output
value
Returns

◆ operator<< [2/3]

template<class Type , class Allocator = std::allocator<Type>>
std::ostream& operator<< ( std::ostream &  output,
const Array< Type, Allocator > &  value 
)
friend
Parameters
output
value
Returns

◆ operator<< [3/3]

template<class Type , class Allocator = std::allocator<Type>>
std::wostream& operator<< ( std::wostream &  output,
const Array< Type, Allocator > &  value 
)
friend
Parameters
output
value
Returns


The documentation for this class was generated from the following file: