Apollo 10.0
自动驾驶开放平台
apollo::cyber::base::AtomicHashMap< K, V, TableSize, type > 模板类 参考

A implementation of lock-free fixed size hash map 更多...

#include <atomic_hash_map.h>

apollo::cyber::base::AtomicHashMap< K, V, TableSize, type > 的协作图:

Public 成员函数

 AtomicHashMap ()
 
 AtomicHashMap (const AtomicHashMap &other)=delete
 
AtomicHashMapoperator= (const AtomicHashMap &other)=delete
 
bool Has (K key)
 
bool Get (K key, V **value)
 
bool Get (K key, V *value)
 
void Set (K key)
 
void Set (K key, const V &value)
 
void Set (K key, V &&value)
 

详细描述

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
class apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >

A implementation of lock-free fixed size hash map

模板参数
KType of key, must be integral
VType of value
128Size of hash table
0Type traits, use for checking types of key & value

在文件 atomic_hash_map.h40 行定义.

构造及析构函数说明

◆ AtomicHashMap() [1/2]

template<typename K , typename V , std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::AtomicHashMap ( )
inline

在文件 atomic_hash_map.h42 行定义.

42: capacity_(TableSize), mode_num_(capacity_ - 1) {}

◆ AtomicHashMap() [2/2]

template<typename K , typename V , std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::AtomicHashMap ( const AtomicHashMap< K, V, TableSize, type > &  other)
delete

成员函数说明

◆ Get() [1/2]

template<typename K , typename V , std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
bool apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Get ( key,
V **  value 
)
inline

在文件 atomic_hash_map.h51 行定义.

51 {
52 uint64_t index = key & mode_num_;
53 return table_[index].Get(key, value);
54 }

◆ Get() [2/2]

template<typename K , typename V , std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
bool apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Get ( key,
V *  value 
)
inline

在文件 atomic_hash_map.h56 行定义.

56 {
57 uint64_t index = key & mode_num_;
58 V *val = nullptr;
59 bool res = table_[index].Get(key, &val);
60 if (res) {
61 *value = *val;
62 }
63 return res;
64 }

◆ Has()

template<typename K , typename V , std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
bool apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Has ( key)
inline

在文件 atomic_hash_map.h46 行定义.

46 {
47 uint64_t index = key & mode_num_;
48 return table_[index].Has(key);
49 }

◆ operator=()

template<typename K , typename V , std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
AtomicHashMap & apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::operator= ( const AtomicHashMap< K, V, TableSize, type > &  other)
delete

◆ Set() [1/3]

template<typename K , typename V , std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
void apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Set ( key)
inline

在文件 atomic_hash_map.h66 行定义.

66 {
67 uint64_t index = key & mode_num_;
68 table_[index].Insert(key);
69 }

◆ Set() [2/3]

template<typename K , typename V , std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
void apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Set ( key,
const V &  value 
)
inline

在文件 atomic_hash_map.h71 行定义.

71 {
72 uint64_t index = key & mode_num_;
73 table_[index].Insert(key, value);
74 }

◆ Set() [3/3]

template<typename K , typename V , std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
void apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Set ( key,
V &&  value 
)
inline

在文件 atomic_hash_map.h76 行定义.

76 {
77 uint64_t index = key & mode_num_;
78 table_[index].Insert(key, std::forward<V>(value));
79 }

该类的文档由以下文件生成: