C++编程中的向量类

Posted

技术标签:

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

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

【问题讨论】:

你问老师了吗? 顺便说一句,你昨天的筷子分类作业做得怎么样? 进展顺利,我想我今天要完成它。非常感谢您的询问。 【参考方案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】:

这两个视频很好地解释了 stl 及其容器迭代器的用法。

http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Introduction-to-STL-with-Stephan-T-Lavavej/

http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-2-of-n/

【讨论】:

以上是关于C++编程中的向量类的主要内容,如果未能解决你的问题,请参考以下文章

如何将来自先前类的值存储到 C++ 中的向量中?

使用向量或其他方法来跟踪 C++ CLI 中的类对象 [关闭]

模板编程向量 C++

使用并行编程 C++ 计算/访问向量

如何使用 C++ 中的模板编程从基类创建派生类?

C++ 编程和最终的移动