- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
bool FindActualQtyOfWeightedReceptacle
( std::map<double,double> &ReceptacleWeighings,
const double ReceptacleId,
double &Weight)
{
Weight = 0.0;
bool recepFound = false;
for (std::map<double,double>::iterator iter = ReceptacleWeighings.begin();
iter != ReceptacleWeighings.end() && !recepFound;
iter++)
{ if (iter->first == ReceptacleId)
{ recepFound = true;
Weight = iter->second;
}
}
return(recepFound);
}
Во Франции одного ведущего (!) С++ программиста с ироничной фамилией Паскаль попросили таки ознакомиться со стандартными контейнерами из библиотеки STL. В частности с std::map. В итоге из-под палки он выдал вот такой "код". Возникает как минимум два вопроса:
1. производительность?
2. и зачем так многа букаф?
Пардон, Жан-Люк, не обижайся. Наговнокодил...
Всегда бесило, когда какой-то пост минусуют, а никаких аргументов не предоставят.
ps: и честно говоря, все равно не вижу смысла "беситься" по поводу минусов...
Проклятие Паскаля
Весьма верю, что после сложной операции с double, в значение могут закрасться "младшие биты", и тогда например В данной проге, судя по всему, сравниваются только ID, над которыми ни один даже самый отчаяный паскалист не станет так извращаться. Тобишь единственно, что с ними могло происходить, это серия присвоений. Или у тебя есть основания полагать, что результат не гарантирован даже в этом случае? В любом случае ссылка не помешает.
он же француз, они любят многабукаф. Ты просто половину букофф не читай и всё сразу станет нормально ))
выучил чувак STL. первая double определена как const ибо у map ключ const.
по поводу ==. map и set юзают понятие эквивалетности. иными словами должно быть
if((! (iter->first < ReceptacleId) && ! (ReceptacleId < iter->first) )
бла-бла;
а вообще чувак жжот. нахрена он хранит Weight если ему нужно лишь выяснить наличие или отсутствие данного ID в map?
не обратил внимание на ссылку