użyciu C++ 11, proszę utworzyć tablicę logicznych i natychmiast oczywiste, żeCzy mogę określić rozmiar tablicy utworzonej za pomocą "nowego typu [n]" w C++?
bool *mymap = new bool[n];
n jest zmienna.
Czy to już wyczyściło pamięć zajmowaną przez macierz? Jeśli nie, czy istnieje lepsze podejście do czyszczenia tablicy niż użycie pętli ponad wszystkimi elementami, ustawiając każdy z nich na fałsz indywidualnie?
Rozważałem użycie std: memset(), ale to wymaga ode mnie poznania rozmiaru tablicy. Teraz początkujący mogą powiedzieć: Łatwe, rozmiar to n * sizeof (bool). Ale ja tego nie kupuję. Kompilator może zdecydować się na spakowanie ich inaczej, nawet pakować je jako bity, prawda?
Czy istnieje sposób na lepsze określenie rozmiaru tablicy? Wyobrażam sobie, że może istnieć funkcja std: arraysize(), która po prostu zwraca przestrzeń przydzielonej tablicy w pamięci. W końcu te informacje muszą być w jakiś sposób zachowane w środowisku wykonawczym, albo wywołanie usunięcia nie wie, ile zwolnić, prawda?
Co z 'std :: vector'? – chris
@chris std :: wektor jest przesadny w moim konkretnym przypadku użycia - używanie bezpośredniej tablicy jest także szybsze. –
Jeśli utworzysz 'std :: vector' o określonym rozmiarze, narzut jest minimalny. Powinieneś naprawdę to sprawdzić. –