C++-STL-Merkmale const T* teilweise Spezialisierung.
PHPz
PHPz 2017-05-16 13:30:50
0
1
1040

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.

PHPz
PHPz

学习是最好的投资!

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

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

template <class T>
struct iterator_traits<const T*>
{
    typedef const T  const_value_type;
    //你可以定义更多的,traits出更多的类型
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage