{"id":17644414,"url":"https://github.com/vigna/sux","last_synced_at":"2026-03-16T18:34:46.891Z","repository":{"id":35885563,"uuid":"183646612","full_name":"vigna/sux","owner":"vigna","description":"Succinct data structures in C/C++","archived":false,"fork":false,"pushed_at":"2024-10-07T12:54:21.000Z","size":864,"stargazers_count":89,"open_issues_count":0,"forks_count":17,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-06-18T10:52:50.043Z","etag":null,"topics":["cplusplus","elias-fano","fenwick-trees","minimal-perfect-hash","ranking","selection","succinct-data-structure"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vigna.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES","contributing":null,"funding":null,"license":"COPYING.RUNTIME","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-26T14:51:10.000Z","updated_at":"2025-06-10T14:40:36.000Z","dependencies_parsed_at":"2024-07-10T10:32:51.133Z","dependency_job_id":"fcce6533-fb0b-4c6e-8c07-d85ab1f227b3","html_url":"https://github.com/vigna/sux","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/vigna/sux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vigna%2Fsux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vigna%2Fsux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vigna%2Fsux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vigna%2Fsux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vigna","download_url":"https://codeload.github.com/vigna/sux/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vigna%2Fsux/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260748199,"owners_count":23056527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cplusplus","elias-fano","fenwick-trees","minimal-perfect-hash","ranking","selection","succinct-data-structure"],"created_at":"2024-10-23T10:05:21.714Z","updated_at":"2026-03-16T18:34:41.867Z","avatar_url":"https://github.com/vigna.png","language":"C++","readme":"Sux 1.0.3\n=========\n\nWelcome to the C++ part of the [Sux](http://sux.di.unimi.it/) project.\n\nAvailable classes\n-----------------\n\nThe classes we provide fall into three categories:\n\n* Static structures for ranking and selection based on the paper\n  [\"Broadword Implementation of Rank/Select\n  Queries\"](http://vigna.di.unimi.it/papers.php#VigBIRSQ). We provide also\n  an implementation of the Elias-Fano representation of monotone sequences\n  that can be used as an opportunistic bitvector representation.\n\n* Fenwick trees with bounded leaf size, and associated dynamic structures\n  for ranking and selection based on the paper [\"Compact Fenwick Trees for\n  Dynamic Ranking and\n  Selection\"](http://vigna.di.unimi.it/papers.php#MaVCFTDRS) (with Stefano\n  Marchini).\n\n* Minimal perfect hashing functions based on the paper [\"RecSplit: Minimal\n  Perfect Hashing via Recursive\n  Splitting\"](http://vigna.di.unimi.it/papers.php#EGVRS) (with Emmanuel\n  Esposito and Thomas Mueller Graf).\n\nAll classes are heavily asserted. For testing speed, remember to use `-DNDEBUG`.\n\nDocumentation can be generated by running `doxygen`.\n\nAll provided classes are templates, so you just have to copy the files in\nthe `sux` directory somewhere in your include path.\n\nBenchmarks\n----------\n\nThe commands `make ranksel`, `make recsplit`, `make fenwick` and `make\ndynranksek` will generate binaries in `bin` with which you can test the\nspeed of RecSplit,  rank/select static structures, compact Fenwick trees\nand dynamic rank/select structures. Note that you can set the `make`\nvariable `LEAF` to change the leaf size of RecSplit, as in `make recsplit\nLEAF=4`, and the variable `ALLOC_TYPE` to the possible values of \nsux::util::AllocType to experiment, for example, with transparent huge\npages on Linux.\n\nFor ranking and selection, we generate one binary for each type of structure,\nwith some variation on parameters (see the makefile for more details). Beside\nthe number of bits, you can provide one or two probabilities. Bits will be set\nto one with the given probability in the first half of the test array, and with\nthe second probability in the second half (if no second probability is\nspecified, it is assumed to be equal to the first one). This setup is necessary\nto show the slow behaviour of naive implementations on\nhalf-almost-empty-half-almost-full arrays.\n\nFor RecSplit, we provide dump/load binaries which dump on disk a minimal\nperfect hash function, and test it. The standard version uses a keys file for\nthe keys, whereas the “128” version uses 128-bit random keys. We suggest the\nlatter for benchmarking as in any case the first step in RecSplit construction\nis mapping to 128-bit hashes.\n\nLicensing\n---------\n\nSux is licensed exactly like `libstdc++` (GPLv3 + GCC Runtime Library\nException), which essentially means you can use it everywhere, exactly\nlike `libstdc++`.\n\nseba (\u003cmailto:sebastiano.vigna@unimi.it\u003e)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvigna%2Fsux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvigna%2Fsux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvigna%2Fsux/lists"}