Maison  >  Questions et réponses  >  le corps du texte

c++ stl traits const T* spécialisation partielle.

Comme suit :

template <class I>
struct iterator_traits
{
    typedef typename I::value_type   value_type;
}
//针对指向常数对象的指针的特例化
template <class T>
struct iterator_traits<const T*>
{
    typedef T  value_type;
}

Ici, je pense obtenir le value_type lié à l'itérateur. Pourquoi convertir const int en int ? Ce que nous voulons obtenir, ce sont des informations de type. Bien que la variable obtenue (variable de ce type) ne puisse pas être modifiée, pourquoi est-elle dite inutile (dit dans le livre d'analyse du code source stl)

J'espère que vous pourrez m'aider à expliquer ce qui précède. Merci.

PHPzPHPz2688 Il y a quelques jours985

répondre à tous(1)je répondrai

  • 漂亮男人

    漂亮男人2017-05-16 13:32:50

    1. Ça y est, le but des traits (extraction) est d'obtenir statiquement certaines caractéristiques inhérentes à l'objet au moment de la compilation

    2. Je ne comprends pas très bien ce que vous voulez exprimer. Vous avez dit « Pourquoi convertir const int en int » En fait, const est défini par ce qui suit

    3. ?
    template <class T>
    struct iterator_traits<const T*>
    {
        typedef const T  const_value_type;
        //你可以定义更多的,traits出更多的类型
    }

    répondre
    0
  • Annulerrépondre