Что здесь означает UserArray? - PullRequest
0 голосов
/ 13 июля 2011

Что представляет собой приведенный ниже синтаксис?

typedef UserArray<T,W,L,H> MyType;

где:

  • T = тип элемента массива
  • W = ширина элемента массива, 0
  • L = нижняя граница индекса массива (предпочтительно нулевая)
  • H = верхняя граница индекса массива

Может кто-нибудь объяснить, используя меняпример для декларации выше?

Подходит ли это понятие под STL?

Ответы [ 2 ]

4 голосов
/ 13 июля 2011

UserArray - это шаблон класса, который принимает четыре параметра шаблона.

Вероятно, это определено так:

template<class T, int W, int L, int H> // parameter names might differ
class UserArray
{
    // ...
};

typedef используется для определения псевдонимов для типов. Это:

typedef UserArray<T,W,L,H> MyType;

Определяет псевдоним для UserArray, используя указанные параметры шаблона. T должен быть типом, а W, L и H должны быть целочисленными константами времени компиляции. Полученный псевдоним называется MyType, и его использование аналогично использованию UserArray с теми же параметрами.

Эти приемы используются для упрощения набора текста, когда тип используется во многих местах. Например, вы можете сделать это:

typedef std::vector<int> IntVector;

IntVector vect; // a vector of ints
1 голос
/ 13 июля 2011

UserArray должен быть контейнером class template, что-то вроде ниже:

template<typename TYPE, unsigned int SIZE, int LOWER_BOUND, int HIGHER_BOUND>
class UserArray {
//...
};

Так что если вы объявите его как

typedef UserArray<int,100,0,99> MyType;

, которыйозначает, что MyType является массивом 100 int с;его нижняя граница равна 0, а верхняя граница равна 99.Таким образом, тип должен играть в диапазоне от 0 до 99.Тем не менее, я не чувствую, что нужна нижняя и высшая границы;потому что размер массива заявляет все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...