Я пытаюсь объявить размер массива символов, и мне нужно использовать значение переменной, объявленной как size_t, чтобы объявить этот размер. Могу ли я в любом случае привести переменную size_t к int, чтобы я мог это сделать?
приведение size_t к int, чтобы объявить размер массива символов
Ответы (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
Незначительная деталь, но разве вы не должны использовать delete [] в своем примере, когда вы используете new []?
- person Jacob; 15.06.2010
@Jacob: Да, и это еще одна веская причина использовать
std::vector. :-) (Исправлено и спасибо)
- person James McNellis; 15.06.2010
Для получения дополнительной информации о size_t я настоятельно рекомендую статьи Дэна Сакса: "Почему size_t имеет значение" и "Дополнительная информация о size_t"
person
Chris Morlier
schedule
14.06.2010
size_tявляется типом, который используется для размера массива. Вам не только не нужно приведение, но если вы его сделаете, результат будет просто неявно преобразован обратно вsize_t. - person Pavel Minaev   schedule 15.06.2010