ENH: added HashTable 'lookup' and 'retain' methods
- lookup(): with a default value (const access) For example, Map<label> something; value = something.lookup(key, -1); being equivalent to the following: Map<label> something; value = -1; // bad value if (something.found(key)) { value = something[key]; } except that lookup also makes it convenient to handle const references. Eg, const labelList& ids = someHash.lookup(key, labelList()); - For consistency, provide a two parameter HashTable '()' operator. The lookup() method is, however, normally preferable when const-only access is to be ensured. - retain(): the counterpart to erase(), it only retains entries corresponding to the listed keys. For example, HashTable<someType> largeCache; wordHashSet preserve = ...; largeCache.retain(preserve); being roughly equivalent to the following two-stage process, but with reduced overhead and typing, and fewer potential mistakes. HashTable<someType> largeCache; wordHashSet preserve = ...; { wordHashSet cull(largeCache.toc()); // all keys cull.erase(preserve); // except those to preserve largeCache.erase(cull); // } The HashSet &= operator and retain() are functionally equivalent, but retain() also works with dissimilar value types.
Showing
- applications/test/HashSet/Test-hashSet.C 4 additions, 0 deletionsapplications/test/HashSet/Test-hashSet.C
- applications/test/HashTable/Test-hashTable.C 26 additions, 6 deletionsapplications/test/HashTable/Test-hashTable.C
- src/OpenFOAM/containers/HashTables/HashSet/HashSet.C 4 additions, 15 deletionssrc/OpenFOAM/containers/HashTables/HashSet/HashSet.C
- src/OpenFOAM/containers/HashTables/HashSet/HashSet.H 2 additions, 2 deletionssrc/OpenFOAM/containers/HashTables/HashSet/HashSet.H
- src/OpenFOAM/containers/HashTables/HashTable/HashTable.C 42 additions, 9 deletionssrc/OpenFOAM/containers/HashTables/HashTable/HashTable.C
- src/OpenFOAM/containers/HashTables/HashTable/HashTable.H 35 additions, 17 deletionssrc/OpenFOAM/containers/HashTables/HashTable/HashTable.H
- src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H 46 additions, 4 deletionssrc/OpenFOAM/containers/HashTables/HashTable/HashTableI.H
- src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.C 3 additions, 3 deletions...M/containers/HashTables/StaticHashTable/StaticHashTable.C
- src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTable.H 2 additions, 2 deletions...M/containers/HashTables/StaticHashTable/StaticHashTable.H
- src/OpenFOAM/containers/HashTables/StaticHashTable/StaticHashTableI.H 4 additions, 6 deletions.../containers/HashTables/StaticHashTable/StaticHashTableI.H
Please register or sign in to comment