Warning, /sdk/clazy/docs/checks/README-container-anti-pattern.md is written in an unsupported language. File is not indexed.
0001 # container-anti-pattern
0002
0003 Finds when temporary containers are being created needlessly.
0004 These cases are usually easy to fix by using iterators, avoiding memory allocations.
0005
0006 Matches code like:
0007
0008 {QMap, QHash, QSet}.values().*
0009 {QMap, QHash}.keys().*
0010 {QVector, QSet}.toList().*
0011 QList::toVector().*
0012 QSet::intersect(other).isEmpty()
0013 for (auto i : {QHash, QMap}.values()) {}
0014 foreach (auto i, {QHash, QMap}.values()) {}
0015
0016 #### Example
0017
0018 set.toList()[0]; // use set.constFirst() instead
0019 hash.values().size(); // Use hash.size() instead
0020 hash.keys().contains(); // Use hash.contains() instead
0021 hash.values().contains(); // Use std::find(hash.cbegin(), hash.cend(), myValue) instead
0022 map.values(k).foo ; // Use QMap::equal_range(k) instead
0023 for (auto i : hash.values()) {} // Iterate the hash directly instead: for (auto i : hash) {}
0024 QSet::intersect(other).isEmpty() // Use QSet::intersects() instead, avoiding memory allocations and iterations, since Qt 5.6