• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

unsigned int czy std::size_t?

0 głosów
348 wizyt
pytanie zadane 7 marca 2025 w C i C++ przez whiteman808 Mądrala (5,560 p.)
Kiedy lepiej używać typu std::size_t a kiedy unsigned int? Tworzę klasę linked_list, a konkretnie metody insert i remove_at i mnie zastanawia czy lepiej w nich użyć size_t czy tego drugiego typu i dlaczego.

1 odpowiedź

+3 głosów
odpowiedź 7 marca 2025 przez Gynvael Coldwind Nałogowiec (30,510 p.)
Do wielkości i ilości najlepiej używać size_t, bo to gwarantuje na każdej architekturze, że da się w to włożyć maksymalną  wielkość obiektu, lub maksymalną liczbę unikatowych obiektów (tudzież indeks obiektu w takim zbiorze). W praktyce na "normalnych współczesnych komputerach" size_t jest 64-bitowym unsigned integerem.

Natomiast unsigned int jest, na "normalnych współczesnych komputerach" 32-bitową zmienną, więc ma ograniczenie do 4 miliardów "czegoś" lub obiektów o wielkość 4GB (minus 1 bajt). Nie ma generalnie powodu, żeby tego używać do liczby / indeksu obiektów, czy wielkości obiektów – wprowadza się wtedy sztuczne ograniczenia.

Co za tym idzie, dobrą praktyką jest używanie size_t do wielkości/indeksów/liczby obiektów, chyba, że jest jakiś bardzo bardzo dobry powód, żeby tego nie robić.

Podobne pytania

0 głosów
1 odpowiedź 1,257 wizyt
pytanie zadane 30 marca 2016 w C i C++ przez enigmatycznyclay Bywalec (2,450 p.)
0 głosów
5 odpowiedzi 4,108 wizyt
pytanie zadane 29 stycznia 2016 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
0 głosów
1 odpowiedź 379 wizyt

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,293 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...