dl
dl_array_enum.h
浏览该文件的文档.
1
13#pragma once
14
15#include <cassert>
16
17namespace dl
18{
20template<typename V, auto N>
22{
23public:
24 using E = decltype(N);
29 {
30#ifndef NDEBUG
31 assert(CheckRange(e));
32#endif
33 return _data[(size_t)e];
34 }
35
36 V& operator[](size_t index)
37 {
38 return operator[](E(index));
39 }
40
42 bool CheckRange(E e)
43 {
44 return (size_t)e < (size_t)N;
45 }
46
47 size_t size() { return (size_t)N; }
48
49 V* begin() { return _data; }
50 V* end() { return _data + (size_t)N; }
51
52private:
53 V _data[(size_t)N];
54};
55
56}
枚举类数组
V & operator[](size_t index)
bool CheckRange(E e)
越界检查
V & operator[](E e)
返回位置元素,debug版本检查越界