[项目推广] 参考 C++ STL 实现的 javscript 标准数据结构库 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ZLY201
V2EX    分享创造

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

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

    历时大半年,[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++ 的吧,有个库方便开发
    penzi
        3
    penzi  
       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 来说性能还是很重要的
    penzi
        5
    penzi  
       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     Solana     5167 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 05:56 PVG 13:56 LAX 21:56 JFK 00:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86