【发布时间】:2010-09-16 18:37:07
【问题描述】:
谁能解释一下,向量类有什么用?我的教授在讲座中提到了以下句子。 模板:每个向量都有一个类参数,用于确定该实例将使用哪种对象类型,通常称为 T。我不明白类参数的确切含义是什么?
【问题讨论】:
-
你问老师了吗?
-
顺便说一句,你昨天的筷子分类作业做得怎么样?
-
进展顺利,我想我今天要完成它。非常感谢您的询问。
谁能解释一下,向量类有什么用?我的教授在讲座中提到了以下句子。 模板:每个向量都有一个类参数,用于确定该实例将使用哪种对象类型,通常称为 T。我不明白类参数的确切含义是什么?
【问题讨论】:
C++ 中的vector 类型本质上是一个动态数组。 class 参数是vector 中元素的类型。例如
int arr[]; // Static C++ array with int elements
vector<int> v; // dynamic array with int elements
在此示例中,int 是类参数类型。
编辑
正如几位 cmets 指出的那样,您的老师对“班级参数”的选择具有误导性。说“模板参数”更正确。
【讨论】:
typenameIIRC。
class,但建议改用typename。首先使用 class 是因为不愿意引入新的关键字,但它既令人困惑(因为您可以传递内置类型或 struct)并且使关键字的含义依赖于上下文。
向量被定义为如下模板:
template<typename T>
class Vector;
要使用它,您需要像这样实例化模板:
Vector<char> myVector;
实例化向量有效地创建了一个新类。这等效于如果您将模板定义中的所有 T 替换为类参数(在本例中为 char)
如果我们有一个简单的模板
template<typename T>
class DataHolder{
public:
T data
}
实例化如下:
DataHolder<char> myChar;
相当于类:
class DataHolder
{
public:
char data;
}
【讨论】:
一个例子:
std::vector<int> v;
这声明了int 元素的vector(动态数组)。最初它包含零个元素的空间。
Web 包含许多有关基本 C++ 的资源。有关 STL vectors 的更多信息,请参见例如 this page。
【讨论】: