【问题标题】:Vector class in c++ programingC++编程中的向量类
【发布时间】:2010-09-16 18:37:07
【问题描述】:

谁能解释一下,向量类有什么用?我的教授在讲座中提到了以下句子。 模板:每个向量都有一个类参数,用于确定该实例将使用哪种对象类型,通常称为 T。我不明白类参数的确切含义是什么?

【问题讨论】:

  • 你问老师了吗?
  • 顺便说一句,你昨天的筷子分类作业做得怎么样?
  • 进展顺利,我想我今天要完成它。非常感谢您的询问。

标签: c++ templates vector


【解决方案1】:

C++ 中的vector 类型本质上是一个动态数组。 class 参数是vector 中元素的类型。例如

int arr[];  // Static C++ array with int elements
vector<int> v; // dynamic array with int elements

在此示例中,int 是类参数类型。

编辑

正如几位 cmets 指出的那样,您的老师对“班级参数”的选择具有误导性。说“模板参数”更正确。

【讨论】:

  • 为了清楚起见:“类参数”(本质上)是“类”类型(虽然它可以是原始类型,所以可能是“类型”)
  • 我同意 - 将其称为类会产生误导,因为您可以传递原语。这不是 Java。
  • 反正是个模板参数,类型是typenameIIRC。
  • 同意老师选择的术语有点奇怪,但可能是由于模板中的class关键字
  • @Rune FS:虽然可以使用class,但建议改用typename。首先使用 class 是因为不愿意引入新的关键字,但它既令人困惑(因为您可以传递内置类型或 struct)并且使关键字的含义依赖于上下文。
【解决方案2】:

向量被定义为如下模板:

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

【讨论】:

  • 谢谢,对问题感觉好多了
【解决方案3】:

一个例子:

std::vector<int> v;

这声明了int 元素的vector(动态数组)。最初它包含零个元素的空间。

Web 包含许多有关基本 C++ 的资源。有关 STL vectors 的更多信息,请参见例如 this page

【讨论】:

  • 我的教授给了我cplusplus.com网站供参考,但我认为你给的网站更容易理解。谢谢
【解决方案4】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 2014-01-28
相关资源
最近更新 更多