Luisa
-
structure
- core
- stl
- filesytem
- hash
- iterator
- ...
- thread_pool
- clock
- stl
- dsl
- core
-
-
core/stl
下, 很多底层接口/容器改用EASTL
而非stl
- vector / fixed_vector / bitvector
fixed
means can be either static or dynamic- will allocate dynamically if required
- list / forward_list / fixed_list / fixed_forward_list
- stack
- save as
vector<T>
- save as
- queue / deque
- priority_queue
- map / multimap / fixed_map / fixed_hash_map / fixed_multimap
-
set / multiset / fixed_set / fixed_hash_set / fixed_multiset
-
vector_map / vector_multimap
- save as
vector<pair<key, value>>
- cache-friendly because of contiguous block of memory
- less efficient when
insert
orerase
- vector_map & vector_multimap
- vector_map 不支持 insert 或存在相同 key 的 pair
, 但可以 overwrite - vector_multimap 支持 insert 或存在相同 key 的 pair
, 不会 overwrite
- vector_map 不支持 insert 或存在相同 key 的 pair
- find & find_as
- 索引方式: 二分法
-
find_as 支持自定义判断逻辑, 可以实现类似模糊搜索的效果:
- vector_set / vector_multiset - save as// Generated by ChatGPT 3.5 from Cursor #include <EASTL/vector_map.h> #include <EASTL/string.h> struct CaseInsensitiveComparator { bool operator()(const eastl::string& a, const eastl::string& b) const { return eastl::CompareI(a.c_str(), b.c_str()) < 0; } }; int main() { eastl::vector_map<eastl::string, int, CaseInsensitiveComparator> map; // Insert elements. map.insert(eastl::make_pair("Key", 1)); // Find element with key "key" (case-insensitive). auto it = map.find_as("key", CaseInsensitiveComparator()); if (it != map.end()) { // Element found. int value = it->second; // value is now 1 } return 0; }
vector<T>
- save as
-
memory
- allocator
- smart pointers
-
functional
-
variant
-
optional
-
lru_cache
- ring_buffer
- save as
vector<T>
- save as
- vector / fixed_vector / bitvector
-
-
- unordered_map
- unordered_set
-
模板狂魔
basic_traits.h
- 一生二, 二生三, 三生万物
basic_types.h
- 矩阵只有基础的运算, 两矩阵相乘的方法都被注释掉了, why?
-
pybind 11
-
Reference
- Constant-sized vector - Stack Overflow