- 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'ов несколько. Ищем неиспользованные циферки...
guest6 02.12.2022 19:46 # 0
ISO 02.12.2022 20:13 # 0
> пул свободных
Недавно ж обсуждали.
guest6 02.12.2022 20:25 # 0
ISO 02.12.2022 20:30 # 0
guest6 02.12.2022 20:34 # 0
guest6 02.12.2022 20:36 # 0
guest6 02.12.2022 20:57 # 0
Я знаю одну ОС, где они генерируются рендомно в целях конспирации
Угадаешь какую?
3.14159265 24.01.2023 07:38 # 0
ISO 02.12.2022 20:59 # 0
На PID родителя тоже смотреть бессмысленно: там может быть кто угодно.
guest6 02.12.2022 21:05 # +2
PID на винде может указывать на и вовсе мёртвый уже процесс, потому что на винде (в отличие от юникса) у родителя никаких обязанностей нету
Support 24.01.2023 12:25 # 0
guest6 02.12.2022 20:58 # +4
TarasB 02.12.2022 22:37 # 0
Но их же 4 миллиарда.
Да, надо ещё хранить максимальный занятый N, а в сете хранить только те свободные, которые не превышают N
3uMuCTOH 03.12.2022 18:58 # 0
Soul_re@ver 02.12.2022 20:21 # +2
Это называется std::set.
(Да, технически в мапе у элемента есть три состояния: не присутствует, истина и ложь, но данный код и никакой подобный ему, который я видел, это не использует)
TarasB 02.12.2022 22:36 # +1
ISO 02.12.2022 23:00 # +2
Support 03.12.2022 00:27 # 0
Какой багор )))