V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ZLY201
V2EX  ›  分享创造

[项目推广] 参考 C++ STL 实现的 javscript 标准数据结构库

  •  2
     
  •   ZLY201 · 2022-07-25 13:32:52 +08:00 · 1807 次点击
    这是一个创建于 612 天前的主题,其中的信息可能已经有所发展或是发生改变。

    历时大半年,[email protected] 终于横空出世!方便的朋友可以伸出小手点个 star 哦~

    github 链接: https://github.com/ZLY201/js-sdsl npm 链接: https://www.npmjs.com/package/js-sdsl

    一款参考 C++ STL 的 javascript 标准数据结构库,英文名 javascript standard data structure library

    内含使用 RB-tree 实现的 Set ,Map 以及哈希表等多种数据结构,拥有极度完整的单元测试和性能测试以及完整的 api 文档

    支持 CommonJS 和 ES modules ,同时支持浏览器 script 标签引入,采用 typescript 编写,具有严谨的类型推导,开发事半功倍

    如果您有任何想法或发现任何漏洞,欢迎提交 merge request 或者联系本人,我们会将您的信息放置到贡献者列表,并在首页显示

    以下是中文 readme


    js-sdsl

    一个以 C++ STL 为基准实现的 JS 库

    包含的数据结构

    • Vector
    • Stack
    • Queue
    • LinkList
    • Deque
    • PriorityQueue
    • Set (using RBTree)
    • Map (using RBTree)
    • HashSet
    • HashMap

    支持的平台

    • node.js (using commonjs)
    • react/vue (using es5)
    • browser (support most browsers)

    下载

    直接下载

    或者使用 npm

    npm install js-sdsl
    

    使用

    为了帮助您使用,我们提供了完整的 API 文档

    在浏览器中使用

    <!-- you can download the file locally and import it or import it dynamically by using url. -->
    <script src="https://zly201.github.io/js-sdsl/js-sdsl.min.js"></script>
    <script>
        const { Vector } = sdsl;
        const myVector = new Vector();
        // your code here...
    </script>
    

    从源码构建

    你可以 pull 这个存储库并运行 yarn build 来重建这个库

    测试

    正确性校验

    我们使用 jest 库编写单元测试,你可以看到工作服的测试覆盖率。 您可以运行 yarn test:check 命令来重现它。

    性能测试

    我们测试了大多数功能以提高效率。 你可以去 testResult.txt 查看我们的运行结果或使用 yarn test:performance 命令重现它。

    许可证

    MIT licensed

    7 条回复    2022-07-26 11:34:30 +08:00
    3dwelcome
        1
    3dwelcome  
       2022-07-25 13:57:46 +08:00
    直接用 wasm 调用 stl 多好,又不是几年前,写 js 不能混用 c++。

    现在 wasm 还支持 simd ,在浏览器上的性能应该会很好。
    ZLY201
        2
    ZLY201  
    OP
       2022-07-25 14:05:54 +08:00
    @3dwelcome 可是一般 js 开发不会去混用 c++ 的吧,有个库方便开发
    maggch97
        3
    maggch97  
       2022-07-25 15:43:04 +08:00
    @zilongyao1366 js 的 dict 和 array 不就是 vector,queue,stack 和 set/map 。剩下的 ds 在 C++也不常用吧。
    ZLY201
        4
    ZLY201  
    OP
       2022-07-25 16:39:00 +08:00
    @maggch97 不一样,dict 不具有排序功能,并且 unshift 和 shift 在 arr 中是 O(n) 的,有效率问题,有一个叫做 denque 的 package 提供了 deque 功能,可以去搜下,被很多底层库引用了,对 nodejs 来说性能还是很重要的
    maggch97
        5
    maggch97  
       2022-07-25 17:50:08 +08:00 via Android
    @zilongyao1366 嗯,你说得对。
    kele999
        6
    kele999  
       2022-07-26 09:42:59 +08:00
    有没有大佬来说下,这个是不是很牛逼
    ZLY201
        7
    ZLY201  
    OP
       2022-07-26 11:34:30 +08:00
    @kele999 目前考虑可以放在 LeetCode 上,https://leetcode.cn/circle/discuss/6kyrIK/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3164 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:02 · PVG 21:02 · LAX 06:02 · JFK 09:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.