diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /static/v10/man3/map.3 | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'static/v10/man3/map.3')
| -rw-r--r-- | static/v10/man3/map.3 | 274 |
1 files changed, 0 insertions, 274 deletions
diff --git a/static/v10/man3/map.3 b/static/v10/man3/map.3 deleted file mode 100644 index 21c3caf5..00000000 --- a/static/v10/man3/map.3 +++ /dev/null @@ -1,274 +0,0 @@ -.TH MAP 3+ -.CT 2 datatype -.SH NAME -Map \- associative array classes -.SH SYNOPSIS -.nf -.B "#include <Map.h>" -.PP -.ds 1s \*S -.ds S \fIS\fP -.ds T \fIT\fP -.ft L -Mapdeclare(\*S,\*T) -Mapimplement(\*S,\*T) -.PP -.ft L -struct Map(\*S,\*T) { - Map(\*S,\*T)(); - Map(\*S,\*T)(const \*T&); - Map(\*S,\*T)(const Map(\*S,\*T)&); - ~Map(\*S,\*T); - Map(\*S,\*T)& operator= (const Map(\*S,\*T)&); - \*T& operator[] (int); - int size(); - Mapiter(\*S,\*T) element(const \*S&); - Mapiter(\*S,\*T) first(); - Mapiter(\*S,\*T) last(); -}; -.PP -.ft L -struct Mapiter(\*S,\*T) { - Mapiter(\*S,\*T) (const Map(\*S,\*T)&); - ~Mapiter(\*S,\*T); - operator int(); - \*S key(); - \*T value(); - Mapiter(\*S,\*T)& operator++ (Mapiter(\*S,\*T)&); - Mapiter(\*S,\*T)& operator-- (Mapiter(\*S,\*T)&); -}; -.ft R -.fi -.SH DESCRIPTION -A -.I map -is a collection of -.I elements, -each of which contains a -.I key -part of type -.I S -and a -.I value -part of type -.I T, -where -.I S -and -.I T -are type names. -Both -.I S -and -.I T -must have value semantics: -assignment or initialization have the effect of copying. -(It is unlikely for -.I S -and -.I T -to be pointers.) -.PP -Map elements are ordered by key: type -.I S -must have a transitive boolean -.BR operator< . -.PP -The macro call -.L Mapdeclare(\*S,\*T) -declares the classes -.B Map(\*S,\*T) -and -.BR Mapiter(\*S,\*T) . -It must appear once in every source file that uses either. -The macro call -.B Mapimplement(\*S,\*T) -defines the functions that implement the map classes. -It must appear exactly once in the entire program. -.SS Map constructors -.nr xx \w'\fLMap(\*S,\*T)(m)\ \fP' -.TP \n(xxu -.B Map(\*S,\*T)() -An empty map. -The value part of future elements -is the value of an otherwise uninitialized -static object of type -.I T . -.TP -.BI Map(\*S,\*T)( x ) -An empty map whose future elements have -default value -.I x . -.TP -.BI Map(\*S,\*T)( m ) -A copy of map -.I m -obtained by copying the elements and default value of -.I m. -.SS Map operators -.TP \n(xxu -.IB n " = " m -All the elements of map -.I n -are deleted and and -copies of the elements of -.I m -are added. -The default value of -.I n -does not change. -Running time is -.IR O (log(| m |) -+ -.RI log(| n |)), -where -.RI | m | -means -.IB m .size() . -.TP -.IB m [ k ] -A reference -to the value part of the element of map -.I m -with key -.BR k . -If the element does not exist, it is created. -Running time is -.IR O (log(| m |)) . -.SS Other Map functions -.TP \n(xxu -.IB m .size() -The number of elements in -.LR m . -Running time is -.IR O (1). -.TP -.IB m .element( k ) -A map iterator -referring to the element of -.I m -with key -.I k -if such an element exists. -Otherwise the result is vacuous. -Running time is -.IR O (log(| m |)) . -.TP -.IB m .first() -.br -.ns -.TP -.IB m .last() -A map iterator -referring to the element of -.I m -with the smallest (or largest) key. -If -.L m -has no elements, the result is vacuous. -Running time is -.IR O (log(| m |)) . -.SS "Map iterators" -For every class -.B Map(\*S,\*T) -there is a class -.BR Mapiter(\*S,\*T) . -A map iterator identifies a map object and possibly -an element in that map. -An iterator that does not identify an element is -.IR vacuous . -.SS Mapiter constructors -.TP \n(xxu -.BI Mapiter(\*S,\*T)( m ) -A vacuous iterator referring to map -.I m. -Running time is -.IR O (1). -.SS Mapiter operators -.TP \n(xxu -.IB i " = " j -Make iterator -.I i -refer (for now) to the same map as does -.I j. -.TP -.BI (int) i -Zero if iterator -.I i -is vacuous, otherwise nonzero. -.TP -.BI ++ i -.br -.ns -.TP -.BI -- i -If iterator -.I i -is vacuous, make it refer to the map element with -the smallest (or largest) key -Otherwise, make it refer to the map element with the -next key greater (or less) than the key of the -current element. -If no such element exists, -.I i -becomes vacuous. -The running time of a single increment -operation for map -.I m -is -.IR O (log(| m |)). -However an iterator -takes only time -.IR O (| m |) -to sequence through the whole map. -.SS Other mapiter functions -.TP \n(xxu -.IB i .key() -.br -.ns -.TP -.IB i .value() -The key (or value) part of the element referred to by -.I i . -If -.I i -is vacuous, return -the value of an otherwise uninitialized static -object of appropriate type. -Running time is -.IR O (1). -.SH EXAMPLES -.EX -struct city { char name[100]; }; -typedef int population; -int operator< (const city&, const city&); -.EE -.PP -.B Mapdeclare(name,population) -.PP -.B Map(name,population) gazetteer; -.PP -.B "// Print big cities; set populations of others to zero. -.PP -.EX - for(Mapiter(name,population) i = gazetteer.first(); i; i++) - if(i.value() > 1000000) - printf("%s\en", i.key().name); - else - gazetteer[i.key()] = 0; -.EE -.SH BUGS -A `type name' -.B Map(\*S,\*T) -or -.BR Mapiter(\*S,\*T) -that contains spaces will be mangled by -.IR cpp (8). -.br -There is no way to delete a single element. -.br -Ambiguities can occur if the type name -.I S -contains an underscore. -.br -No precautions are taken against running out of memory. |
