if I do:
std::unique_ptr<int[]> uparr(new int[1984]);
и предавам uparr
на някого, без да му предавам 1984
, могат ли да видят колко елемента има?
известен още като има ли еквивалент на .size() на вектор за unique_ptr на масив?
if I do:
std::unique_ptr<int[]> uparr(new int[1984]);
и предавам uparr
на някого, без да му предавам 1984
, могат ли да видят колко елемента има?
известен още като има ли еквивалент на .size() на вектор за unique_ptr на масив?
Не, няма. Динамичните масиви са донякъде дефектна функция на езика. По същество винаги ще искате/трябва да предавате дължината на масива отделно (освен ако нямате някаква политика за наблюдение). Така че можете също да използвате std::vector
(ако нямате нищо против допълнителната дума за капацитета).
Не, информацията се губи.
Ако трябва да го следите, използвайте вместо това вектор или ако наистина не искате допълнителните услуги, напишете малка обвивка около разпределен масив. Можете например да разгледате предложението std::dynarray
, което беше стартирано от стандарта c++1y.