Warning, /sdk/clazy/docs/checks/README-reserve-candidates.md is written in an unsupported language. File is not indexed.

0001 # reserve-candidates
0002 
0003 
0004 Finds places that could use a `reserve()` call.
0005 Whenever you know how many elements a container will hold you should reserve
0006 space in order to avoid repeated memory allocations.
0007 
0008 #### Trivial example missing reserve()
0009 
0010     QList<int> ages;
0011     // list.reserve(people.size());
0012     for (auto person : people)
0013         list << person.age();
0014 
0015 Example where reserve shouldn't be used:
0016 
0017     QList<int> list;
0018     for (int i = 0; i < 1000; ++i) {
0019         // reserve() will be called 1000 times, meaning 1000 allocations
0020         // whilst without a reserve the internal exponential growth algorithm would do a better job
0021         list.reserve(list.size() + 2);
0022         for (int j = 0; j < 2; ++j) {
0023             list << m;
0024         }
0025     }
0026 
0027 #### Supported containers
0028 `QVector`, `std::vector`, `QList`, `QSet` and `QVarLengthArray`
0029 
0030 #### Pitfalls
0031 Rate of false-positives is around 15%. Don't go blindly calling `reserve()` without proper analysis.
0032 In doubt don't use it, all containers have a growth curve and usually only do log(N) allocations
0033 when you append N items.