KisaragiLibrary
 
読み取り中…
検索中…
一致する文字列を見つけられません
utility.hpp
[詳解]
1#pragma once
2
3/**
4 * @file utility.hpp
5 * @brief 纏めるのが思いつかなかった汎用関数
6 * @author 樺澤陽向
7 * @date 2025/05/07
8 * @since ver1.0.0 Bool型(削除済み)から有用な関数のみを追加
9 *
10 */
11
12#include <vector>
13
14namespace Kisaragi_Lib
15{
16 /// <summary>
17 /// std::vector<T>から特定の条件に一致する要素を削除する関数
18 /// RemoveIfした後にEraseするため、高速です
19 /// </summary>
20 /// <typeparam name="VectorType">std::vector<VectorType></typeparam>
21 /// <typeparam name="Predicate">要素削除に使用する条件となる、boolを返す関数・ラムダ式など</typeparam>
22 /// <param name="_vec">操作するvector配列</param>
23 /// <param name="_predicate">要素削除の条件となる、boolを返す関数・ラムダ式など</param>
24 /// <returns>削除された要素の次の要素を指すイテレータ</returns>
25 /// @since 1.0.0
26 template<typename VectorType, typename Predicate>
27 static typename std::vector<VectorType>::iterator RemoveIfErase(std::vector<VectorType>& _vec, const Predicate& _predicate)
28 {
29 auto it = std::remove_if(_vec.begin(), _vec.end(), _predicate);
30
31 return _vec.erase(it, _vec.end());
32 }
33
34 /// <summary>
35 /// _valの差が_許容範囲内か調べる
36 /// </summary>
37 /// <typeparam name="T">型</typeparam>
38 /// <param name="_val01">比較したい値01</param>
39 /// <param name="_val02">比較したい値02</param>
40 /// <param name="_epsilon">許容値(含む)</param>
41 /// <returns>許容範囲か否か</returns>
42 /// @since ver1.0.0 Bool型(削除済み)からを追加
43 template<class T>
44 static bool EpsilonIf(T _val01, T _val02, T _epsilon)
45 {
46 return ((abs(_val01 - _val02)) <= _epsilon);
47 }
48
49 /// <summary>
50 /// valが範囲内か調べる
51 /// </summary>
52 /// <typeparam name="T">型</typeparam>
53 /// <param name="_val">値</param>
54 /// <param name="_rangeMin">範囲内の最小値</param>
55 /// <param name="_rangeMax">範囲内の最大値</param>
56 /// <returns>範囲内か否か</returns>
57 /// @since ver1.0.0 Bool型(削除済み)から追加
58 template<class T>
59 static bool IsRange(T _val, T _rangeMin, T _rangeMax)
60 {
61 return ((_val >= _rangeMin) && (_val <= _rangeMax));
62 }
63}
Definition Accessor.hpp:110
static bool IsRange(T _val, T _rangeMin, T _rangeMax)
valが範囲内か調べる
Definition utility.hpp:59
static std::vector< VectorType >::iterator RemoveIfErase(std::vector< VectorType > &_vec, const Predicate &_predicate)
std::vector<T>から特定の条件に一致する要素を削除する関数 RemoveIfした後にEraseするため、高速です
Definition utility.hpp:27
static bool EpsilonIf(T _val01, T _val02, T _epsilon)
_valの差が_許容範囲内か調べる
Definition utility.hpp:44