- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
std::map<int,bool> usedIds;
...
int SomeClass::GetNewId()
{
int nId = 1;
while( usedIds.find( nId ) != usedIds.end() ) nId++;
usedIds[nId] = true;
return nId;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
std::map<int,bool> usedIds;
...
int SomeClass::GetNewId()
{
int nId = 1;
while( usedIds.find( nId ) != usedIds.end() ) nId++;
usedIds[nId] = true;
return nId;
}
Таких map'ов несколько. Ищем неиспользованные циферки...
> пул свободных
Недавно ж обсуждали.
Я знаю одну ОС, где они генерируются рендомно в целях конспирации
Угадаешь какую?
На PID родителя тоже смотреть бессмысленно: там может быть кто угодно.
PID на винде может указывать на и вовсе мёртвый уже процесс, потому что на винде (в отличие от юникса) у родителя никаких обязанностей нету
Но их же 4 миллиарда.
Да, надо ещё хранить максимальный занятый N, а в сете хранить только те свободные, которые не превышают N
Это называется std::set.
(Да, технически в мапе у элемента есть три состояния: не присутствует, истина и ложь, но данный код и никакой подобный ему, который я видел, это не использует)
Какой багор )))