跳转至

Luisa

  • structure

    • core
      • stl
        • filesytem
        • hash
        • iterator
      • ...
      • thread_pool
      • clock
    • dsl
  • EASTL

    • 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>
      • 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 or erase
        • vector_map & vector_multimap
          • vector_map 不支持 insert 或存在相同 key 的 pair, 但可以 overwrite
          • vector_multimap 支持 insert 或存在相同 key 的 pair, 不会 overwrite
        • find & find_as
          • 索引方式: 二分法
          • find_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_set / vector_multiset - save as vector<T>
      • memory

        • allocator
        • smart pointers
      • functional

      • variant

      • optional

      • lru_cache

      • ring_buffer
        • save as vector<T>
  • unordered_dense

    • unordered_map
    • unordered_set
  • 模板狂魔

    • basic_traits.h
      • 一生二, 二生三, 三生万物
    • basic_types.h
      • 矩阵只有基础的运算, 两矩阵相乘的方法都被注释掉了, why?
  • pybind 11

  • Reference