有人能解释一下vector类的用途吗?我的教授在讲座中提到了下面的句子。 模板:每个向量都有一个类参数,它确定该实例将使用哪种对象类型,通常称为T。我不明白类参数究竟是什么意思?
C++中的vector
类型本质上是一个动态数组。类参数是vector
内元素的类型。例如:
int arr[]; // Static C++ array with int elements
vector<int> v; // dynamic array with int elements
在这个例子中,int
是类的参数类型。
编辑
正如一些评论所指出的那样,你老师选择使用“类参数”这个术语是误导性的。更正确的说法是“模板参数”。typename
。 - stragerclass
,但建议使用typename
。class
最初被使用是因为不愿引入新的关键字,但它既令人困惑(因为您可以传递内置类型或struct
),也使关键字的含义上下文相关。 - Matthieu M.向量被定义为类似模板的形式:
template<typename T>
class Vector;
要使用它,您需要像这样实例化模板:
Vector<char> myVector;
实例化一个向量实际上创建了一个新的类,这个类等同于如果你用类参数(在此情况下为char)替换模板定义中的每个T所得到的结果。
因此,如果我们有一个简单的模板
template<typename T>
class DataHolder{
public:
T data
}
实例化方式如下:
DataHolder<char> myChar;
等同于以下类:
class DataHolder
{
public:
char data;
}
std::vector<int> v;
这声明了一个vector
(动态数组),其中包含int
元素。最初它包含零个元素的空间。
网络上有许多关于基本C++的资源。例如,有关STL vector
的更多信息,请参见this page。