map |
Top Previous Next |
Scripts > Class elements and c++ instructions > Interpreted C++ instructions > Container > map
A container class map manages a list of pairs of values. All pairs of a list have the same data types. There are, however, different map types depending on type of the contained pairs. (See the table above)
Syntax
mstrbool <identifier> mstrint <identifier> mstruint <identifier> mstrdbl <identifier> mstrchar <identifier> mstrstr <identifier> mstrnode <bezeichner> mstrdnode <identifier>
Description
The map types are typedefs of the class CTT_Map< value_type > in the exported code. CTT_Map is derived from std::map< value_type >.
A map variable is a list of pairs of values. Each pair consists of a key word and its value. The pairs are sorted alphabetically according to the key. Thus a map has a good performance, when searching for a key, but not so good performance when searching for a value. A map is always in a certain state: one of the pairs is the current pair. This pair is denoted by the cursor (pointer). The cursor also can be invalid: it can be positioned before or behind the elements (pairs). In this case the property hasCurrent is false and to access the key or value makes no sense. The cursor can be positioned and the properties of the current pair of strings can read or manipulated.
All map classes have the same methods. These are
1.) the read only methods of the general cursor class:
bool isValid() const bool hasCurrent() const bool empty() const unsigned int size() const bool gotoNext() bool gotoPrev() value_type value() const bool containsValue(const value_type& ) const bool findValue(const value_type& xValue) bool findNextValue(const value_type& xValue) bool findPrevValue(const value_type& xValue)
2.) getCursor() const
By this method an external cursor is connected with the map.
Example:
mstrnode m; mstrnode::cursor cr = m.getCursor();
cr now points to the same data element as the internal cursor, but further both can be placed independently from each other.
3. In addition to these general methods the map as well as an external cursor of a map has the read only methods:
str key() const
returns the key of the current element or an empty string, if there is no current pair.
bool containsKey(const str& xsKey) const
returns true, if a key xsKey is contained in the map.
bool findKey(const str& xsKey)
searches for the key xsKey. If the key is contained in the map the according element becomes the actual element and the function returns true. Otherwise false will be returned.
4.) Methods, which change the content of a map:
void reset()
Positions the cursor before/behind the list of elements of the map.
void clear()
removes all elements and resets all cursors.
bool add(const str& key, const value_type& xValue)
inserts an element into the map with the key key and the value value. If the insertion succeeded, true is returned. If there was already a pair with the key key inside of the map, false will be returned and the value will not be overwritten. All cursors are reset.
bool remove()
removes the current element from the map and returns true. If there is no current element or if an error occurs, false will be returned. All cursors are reset.
bool remove(const str& xsKey)
removes the element with the key xsKey from the map and returns true. If the key isn't contained in the map or an error occures, false will be returned. All cursors are reset.
bool setValue(const value_type& xValue)
changes the value of the current element and returns true. If there is no current element or if an error occurs, false will be returned.
5.) Direct element access
If you have a mstrstr named m, you can insert elements or access their values directly by
m[key]
This either returns the value of the element with the key key, or inserts an element with key, if it does not yet exist. So by
m["one"] = "two";
you insert a value with the key "one" and the value "two" and by
str s = m["one"];
you can copy the value "two" into the string s. If a new element is inserted, all cursors are reset.
Attention: if there was not inserted a value for the key before, the latter statement will automatically insert an empty string as value for the key "one" and copy the empty string to s. If you want to test, if the key exists in the map, you have to use the findKey function above.
|
This page belongs to the TextTransformer Documentation |
Home Content German |