mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
This change renames all occurrences of `namespace ripple` and `ripple::` to `namespace xrpl` and `xrpl::`, respectively, as well as the names of test suites. It also provides a script to allow developers to replicate the changes in their local branch or fork to avoid conflicts.
38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
# Basics
|
|
|
|
Utility functions and classes.
|
|
|
|
ripple/basic should contain no dependencies on other modules.
|
|
|
|
# Choosing a rippled container.
|
|
|
|
- `std::vector`
|
|
- For ordered containers with most insertions or erases at the end.
|
|
|
|
- `std::deque`
|
|
- For ordered containers with most insertions or erases at the start or end.
|
|
|
|
- `std::list`
|
|
- For ordered containers with inserts and erases to the middle.
|
|
- For containers with iterators stable over insert and erase.
|
|
- Generally slower and bigger than `std::vector` or `std::deque` except for
|
|
those cases.
|
|
|
|
- `std::set`
|
|
- For sorted containers.
|
|
|
|
- `xrpl::hash_set`
|
|
- Where inserts and contains need to be O(1).
|
|
- For "small" sets, `std::set` might be faster and smaller.
|
|
|
|
- `xrpl::hardened_hash_set`
|
|
- For data sets where the key could be manipulated by an attacker
|
|
in an attempt to mount an algorithmic complexity attack: see
|
|
http://en.wikipedia.org/wiki/Algorithmic_complexity_attack
|
|
|
|
The following container is deprecated
|
|
|
|
- `std::unordered_set`
|
|
- Use `xrpl::hash_set` instead, which uses a better hashing algorithm.
|
|
- Or use `xrpl::hardened_hash_set` to prevent algorithmic complexity attacks.
|