pluffie
@pluffie
Стыдно за старые вопросы

Почему в структуре array количество элементов пишется там же где и тип данных?

В C++ при объявлении шаблонного класа пишут:
myClass<int> object;
Если есть конструктор с параметрами то:
myClass<int> object(3);
Но в динамической структуре данных array пишут:
array<int, 7> myArray;
Где int - дип данных, а 7 - кол-во элементов. Так почему 7 пишется именно там? И как можно реализовать так-же?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
Это называется Non Type Template Parameter (NTTP). Передавать туда можно только константы (если не пытаться взорвать себе мозг). Объявить такой шаблон можно следующим образом:

template <size_t size>
struct Array {
    MyClass data[size];
};

Array<5> a;
a.data[2] = ...;

Определение методов оставлю как упражнение для читателя.
В std::array два параметра шаблона: тип и константа, так что он применим не только для MyClass, но и для любых других типов.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы