amadeusitgroup / amc Goto Github PK
View Code? Open in Web Editor NEWCollection of high performance C++ containers that can be chosen as drop-in replacements for std::vector and std::set
License: MIT License
Collection of high performance C++ containers that can be chosen as drop-in replacements for std::vector and std::set
License: MIT License
Before waiting for completion of C++20 support of constexpr memory allocation, we can improve FixedCapacityVector
in order to make it 100 % compatible with constexpr as it does not allocate memory.
It would be great if we could have a code coverage metric for the unit tests.
Currently vectors swap
methods only swap the contents of the vectors, without touching each other's Allocator.
Standard defines allocator trait propagate_on_container_swap
to control this behavior.
see std::set::find overloads from C++14
.
Since C++17, std::vector may be declared with incomplete types. However, it's not the case for amc::vector
as it shares some parts with amc::SmallVector
and amc::FixedCapacityVector
which require complete types.
Allow definition of amc::vector
with incomplete types.
More information here
The benchmark report shows ~20ns average lookup time for std::unordered_set, which is less than the time taken by a cache miss, therefore unrealistic for average sized sets. The benchmark uses sets of 100k elements, a std::unordered_set of 100k int32 barely fits in L3 cache and the benchmark makes it look too good in comparison with amc::FlatSet.
I suggest to use bigger set sizes, or repeat the benchmark for different set sizes.
Readme is explaining the core contents of the library but can be improved:
FetchContent
) with code integration examplesvectors tests is a bit complicated with large functions and should be broken down in smaller tests to ease readability.
We would then be able to see if all the features of the class are properly tested.
Implement helper function amc::erase_if
behaving like std::erase_if
std::set comparison operators are templated and should accept other types of sets than only Self
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.