在 C++ 中,箭头('<'、'>')中的单词是什么?

what are the words inside arrows('<', '>') in c++?

本文关键字:单词 是什么 gt lt 箭头 C++      更新时间:2023-10-16

我正在浏览C++,无法理解箭头括号内的项目。

ReadOnlyArrayGattCharacteristic<uint8_t, sizeof(readValue)> readChar(readCharUUID, readValue);

在此示例中,箭头括号("uint8_t"和"sizeof(readValue("内的内容是什么意思?

您可能希望在此处阅读有关文档的更多信息。

其中<inbrackets>表示template<typename T , unsigned NUM_ELEMENTS>.根据 ISO C++ (https://isocpp.org/wiki/faq/templates(

模板是一个千篇一律的切割器,它指定如何切割 看起来都差不多(尽管饼干可以由 各种面团,它们都会有相同的基本形状(。在 同样,类模板是一个千篇一律的切割器,用于描述如何 构建一个看起来基本相同的类家族,并且 函数模板描述如何构建外观相似的族 功能。

类模板通常用于构建类型安全容器(尽管 这仅触及了如何使用它们的表面(。

例如

考虑一个容器class Array,它的作用类似于整数数组:

// This would go into a header file such as "Array.h"
class Array {
public:
  Array(int len=10)                  : len_(len), data_(new int[len]) { }
 ~Array()                            { delete[] data_; }
  int len() const                    { return len_;     }
  const int& operator[](int i) const { return data_[check(i)]; }  // Subscript operators often come in pairs
  int&       operator[](int i)       { return data_[check(i)]; }  // Subscript operators often come in pairs
  Array(const Array&);
  Array& operator= (const Array&);
private:
  int  len_;
  int* data_;
  int  check(int i) const
    {
      if (i < 0 || i >= len_)
        throw BoundsViol("Array", i, len_);
      return i;
    }
};
一遍

又一遍地重复上述内容,Array floatcharstd::stringArray std::string等,会变得乏味。相反,您可以在类定义之前添加template<typename T>(T可以是您想要的任何标识符,T只是最常用的标识符,尤其是在示例中(。然后,在引用数据类型时,不要使用 intfloatchar,而是改用T。此外,不是仅仅将类称为Array,而是在引用模板时Array<T>,或者在引用特定实例时Array<int>Array<float>等。

// This would go into a header file such as "Array.h"
template<typename T>
class Array {
public:
  Array(int len=10)                : len_(len), data_(new T[len]) { }
 ~Array()                          { delete[] data_; }
  int len() const                  { return len_;     }
  const T& operator[](int i) const { return data_[check(i)]; }
  T&       operator[](int i)       { return data_[check(i)]; }
  Array(const Array<T>&);
  Array(Array<T>&&);
  Array<T>& operator= (const Array<T>&);
  Array<T>& operator= (Array<T>&&);
private:
  int len_;
  T*  data_;
  int check(int i) const {
    assert(i >= 0 && i < len_);
    return i;
  }
};

阅读这本书,它将帮助 http://www.amazon.com/Template-Metaprogramming-Concepts-Techniques-Beyond/dp/0321227255