dl
dl_range_find.h
浏览该文件的文档.
1
12#pragma once
13
14#include "base/dl_vector2.h"
15
17namespace dl::Find
18{
23template<typename T, typename V>
24size_t FirstIndex(const T& container, const V& v)
25{
26 for (size_t i = 0; i < container.size(); ++i)
27 {
28 if (container[i] == v)
29 {
30 return i;
31 }
32 }
33 return -1;
34}
35
40//template<typename T, typename V>
41//SizeT FirstIndex(const Vector2<T, size_t>& container, const V& v)
42//{
43// for (size_t j = 0; j < container.GetHeight(); ++j)
44// {
45// for (size_t i = 0; i < container.GetWidth(); ++i)
46// {
47// if (container.Get(j, i) == v)
48// {
49// return { i, j };
50// }
51// }
52// }
53// return { -1_zu, -1_zu };
54//}
55
60template<typename C, typename F>
61auto FirstYes(C& container, F func)
62{
63 for (auto& iter : container)
64 {
65 if (func(iter))
66 {
67 return &iter;
68 }
69 }
70 using V = std::decay_t<decltype(container)>;
71 using T = typename V::value_type;
72 return (T*)nullptr;
73}
74
75}
2维vector
查找算法
size_t FirstIndex(const T &container, const V &v)
find,返回下标
auto FirstYes(C &container, F func)
find,返回下标