Heim  >  Fragen und Antworten  >  Hauptteil

C++-STL-Merkmale const T* teilweise Spezialisierung.

Wie folgt:

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;
}

Hier denke ich darüber nach, den value_type in Bezug auf den Iterator zu erhalten. Warum const int in int konvertieren? Was wir erhalten möchten, sind Typinformationen. Obwohl die erhaltene Variable (dieser Typ) nicht geändert werden kann, warum wird sie als nutzlos bezeichnet (im STL-Quellcode-Analysebuch angegeben)

Ich hoffe, Sie können mir helfen, das oben Gesagte zu erklären. Danke schön.

PHPzPHPz2688 Tage vor983

Antworte allen(1)Ich werde antworten

  • 漂亮男人

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

    1. 是这样的, traits(萃取)的目的是用来在编译期能静态的取得对象的一些固有特性

    2. 没太明白你想表达什么,你说“为什么把const int转换成int”,实际上const是由下面的来定义的

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

    Antwort
    0
  • StornierenAntwort