R
Raider
Is there std::map member-function that do as code below?
typedef std::map<NameClass, ValueClass> ParameterContainer;
....
// this code is equivalent to "_Parameters[Name] = Value",
// but a bit faster for insertion
<code>
void SetParameter(const NameClass& Name, const ValueClass& Value)
{
ParameterContainer::iterator Existent = _Parameters.find(Name);
if (Existent != _Parameters.end())
Existent->second = Value;
else
_Parameters.insert(ParameterContainer::value_type(Name, Value));
}
</code>
PS. for insertion, "_Parameters[Name] = Value" calls default constructor
and than operator=, because it consists of two operations: operator[]
(which calls default constructor for ValueClass), than operator=. It's a
little bit slow for complicated ValueClass;
typedef std::map<NameClass, ValueClass> ParameterContainer;
....
// this code is equivalent to "_Parameters[Name] = Value",
// but a bit faster for insertion
<code>
void SetParameter(const NameClass& Name, const ValueClass& Value)
{
ParameterContainer::iterator Existent = _Parameters.find(Name);
if (Existent != _Parameters.end())
Existent->second = Value;
else
_Parameters.insert(ParameterContainer::value_type(Name, Value));
}
</code>
PS. for insertion, "_Parameters[Name] = Value" calls default constructor
and than operator=, because it consists of two operations: operator[]
(which calls default constructor for ValueClass), than operator=. It's a
little bit slow for complicated ValueClass;