dl
dl
base
dl_unordered_map2.h
浏览该文件的文档.
1
12
#pragma once
13
14
#include <unordered_map>
15
16
#include "
dl_type.h
"
17
18
namespace
dl
19
{
21
template
<
typename
K,
typename
V>
22
class
UnorderedMap2
23
{
24
public
:
25
using
K2
=
const
std::array<K, 2>&;
29
V
*
Get
(
K2
xy)
30
{
31
auto
iter = _data.find(xy[1]);
32
if
(iter == _data.end())
33
return
nullptr
;
34
35
auto
iter1 = iter->second.find(xy[0]);
36
if
(iter1 == iter->second.end())
37
return
nullptr
;
38
39
return
&iter1->second;
40
}
41
45
V
&
Add
(
K2
xy)
46
{
47
return
_data[xy[1]][xy[0]];
48
}
49
53
bool
Add
(
K2
xy,
const
V
& v)
54
{
55
auto
& iter = _data[xy[1]];
56
auto
iter1 = iter.insert({ xy[0], v });
57
return
iter1.second;
58
}
59
63
bool
Delete
(
K2
xy)
64
{
65
auto
iter = _data.find(xy[1]);
66
if
(iter == _data.end())
67
return
false
;
68
69
auto
& container = iter->second;
70
auto
iter1 = container.find(xy[0]);
71
if
(iter1 == container.end())
72
return
false
;
73
74
container.erase(iter1);
75
if
(container.empty())
76
_data.erase(iter);
77
return
true
;
78
}
79
81
auto
&
GetContainer
() {
return
_data; }
82
86
bool
IsEmpty
()
const
87
{
88
return
_data.empty();
89
}
90
94
size_t
GetYSize
()
95
{
96
return
_data.size();
97
}
98
102
std::size_t
GetXSize
(
const
K
& y)
103
{
104
auto
iter = _data.find(y);
105
if
(iter == _data.end())
106
return
0;
107
return
iter->second.size();
108
}
109
112
std::unordered_map<K, V>*
GetContainerY
(
const
K
& y)
113
{
114
auto
iter = _data.find(y);
115
if
(iter == _data.end())
116
return
nullptr
;
117
return
&iter->second;
118
}
119
private
:
120
std::unordered_map<K, std::unordered_map<K, V>> _data;
121
};
122
}
dl::UnorderedMap2
2维unordered_map
定义
dl_unordered_map2.h:23
dl::UnorderedMap2::IsEmpty
bool IsEmpty() const
返回y的数量
定义
dl_unordered_map2.h:86
dl::UnorderedMap2::GetYSize
size_t GetYSize()
返回y的数量
定义
dl_unordered_map2.h:94
dl::UnorderedMap2::GetContainer
auto & GetContainer()
返回容器,用于遍历
定义
dl_unordered_map2.h:81
dl::UnorderedMap2::GetXSize
std::size_t GetXSize(const K &y)
返回y的子项数量,没有返回0
定义
dl_unordered_map2.h:102
dl::UnorderedMap2::Get
V * Get(K2 xy)
返回位置元素,失败返回nullptr
定义
dl_unordered_map2.h:29
dl::UnorderedMap2::Delete
bool Delete(K2 xy)
删除位置元素,成功返回true
定义
dl_unordered_map2.h:63
dl::UnorderedMap2::Add
bool Add(K2 xy, const V &v)
添加元素,已有返回false
定义
dl_unordered_map2.h:53
dl::UnorderedMap2::GetContainerY
std::unordered_map< K, V > * GetContainerY(const K &y)
返回y的容器,失败返回nullptr
定义
dl_unordered_map2.h:112
dl::UnorderedMap2::K2
const std::array< K, 2 > & K2
定义
dl_unordered_map2.h:25
dl::UnorderedMap2::Add
V & Add(K2 xy)
返回位置元素,如果不存在就构造一个
定义
dl_unordered_map2.h:45
dl_type.h
通用类型
dl
定义
dl_array.h:22
dl::KeyCode::V
@ V
定义
dl_input.h:123
dl::KeyCode::K
@ K
定义
dl_input.h:112
制作者
1.13.1