приведение size_t к int, чтобы объявить размер массива символов

Я пытаюсь объявить размер массива символов, и мне нужно использовать значение переменной, объявленной как size_t, чтобы объявить этот размер. Могу ли я в любом случае привести переменную size_t к int, чтобы я мог это сделать?


person Brandon Hilton    schedule 14.06.2010    source источник
comment
size_t является типом, который используется для размера массива. Вам не только не нужно приведение, но если вы его сделаете, результат будет просто неявно преобразован обратно в size_t.   -  person Pavel Minaev    schedule 15.06.2010


Ответы (2)


size_t — это целочисленный тип, и приведение не требуется.

В C++, если вы хотите иметь массив динамического размера, вам нужно использовать динамическое размещение с помощью new. То есть нельзя использовать:

std::size_t sz = 42;
char carray[sz];

Вместо этого вам нужно использовать следующее:

std::size_t sz = 42;
char* carray = new char[sz];
// ... and later, when you are done with the array...
delete[] carray;

или, что предпочтительнее, вы можете использовать std::vector (std::vector управляет памятью за вас, поэтому вам не нужно помнить о ее явном удалении, и вам не нужно беспокоиться о многих проблемах владения, возникающих при ручном динамическом распределении):

std::size_t sz = 42;
std::vector<char> cvector(sz);
person James McNellis    schedule 14.06.2010
comment
Незначительная деталь, но разве вы не должны использовать delete [] в своем примере, когда вы используете new []? - person Jacob; 15.06.2010
comment
@Jacob: Да, и это еще одна веская причина использовать std::vector. :-) (Исправлено и спасибо) - person James McNellis; 15.06.2010

Для получения дополнительной информации о size_t я настоятельно рекомендую статьи Дэна Сакса: "Почему size_t имеет значение" и "Дополнительная информация о size_t"

person Chris Morlier    schedule 14.06.2010