Witam, staram się wymyślić jakiś system generowania i wyszukiwania wolnego U(nique)ID w strukturze danych.
Przykładowo:
struct StrDanych {
unsigned long int UID;
string Dane;
};
main(){
vector <StrDanych> Array;
return 0;
}
Do takiego wektora będę dodawał kolejne elementy, każdy z nich musi mieć swoje UID. Na początku jest łatwo bo będą to kolejne liczby 1,2,3,..,n ; jednak w momencie kiedy usunę kilka elementów w środku zwolnią się kolejne UID np. 4,15,38,...,m. W końcu kiedy będę dodawał kolejne elementy chciałbym żeby zamiast przypisywać dane do obecnego najwyższego UID+1 przypisać do najniższego wolnego, np 4 (w tym przykładzie). Od razu zaznaczam że UID nie ma nic wspólnego z indexem w tablicy, gdyż za pomocą tych UID będą powiązane inne struktury, jak w bazie danych (przynajmniej Accessie:p) za pomocą klucza podstawowego (bo koniec końców o to mi chodzi).
Przykładowy przebieg tego o czym mówię jeśli dość kiepsko opisałem:
>Tablica elementow<
UID...Data
..1...Kon
..2...Kura
..3...Kogut
..4...Slon
..5...Tygrys
->Dodaj nowy element
UID...Data
..1...Kon
..2...Kura
..3...Kogut
..4...Slon
..5...Tygrys
..6...Kanapka //dodało na najbliższym wolnym UID - '6' Kanapke
->Usun Slon
UID...Data
..1...Kon
..2...Kura
..3...Kogut
..5...Tygrys
..6...Kanapka
->Dodaj nowy element
UID...Data
..1...Kon
..2...Kura
..3...Kogut
..4...NowyElement //zabiera wolną 4 zamiast 7
..5...Tygrys
..6...Kanapka
Mój obecny algorytm ma sens tylko dla bardzo małego zakresu danych (dla 50 tyś. trwa to już kilka sekund) (jeśli jest potrzeba mogę go wrzucić). Także zwracam się do was z pytaniem, czy ktoś mógłby mi podsunąć jakieś sensowne rozwiązanie mojego problemu - tzn jakieś 'słowo klucz' wg. którego mógłbym przeszukać internet albo jakąś technikę organizacji czegoś takiego. Nie proszę o kod!