Разрешается ли typedef во время компиляции в c ++? - PullRequest
0 голосов
/ 21 апреля 2020

Я пишу код на C ++, где мне нужна высокая производительность. Но я также хочу, чтобы мой код читался, поэтому я использую typedef, но я не уверен, что это замедлит мою программу. Также мой typedef используется в классе с template, поэтому я не уверен, изменит ли это что-нибудь или нет. Это код:

template<class T>
class A {
   typedef std::vector<T> v;

};

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

A typedef - это просто псевдоним. Компилятор не заботится об этом внутренне, и это не влияет на сгенерированный код.

Последний (не отладочный) исполняемый файл не будет ссылаться ни на одну из этих вещей, он все испечется как машинный код.

1 голос
/ 21 апреля 2020

Да, это решается во время компиляции. Также есть новая лучшая альтернатива для этого using.

template<class T>
class A {
    // typedef std::vector<T> vector_t;
    using vector_t = std::vector<T>; // new type created

    vector_t   m_array; // now class A has m_array of type std::vector<T>
};
...