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。 反正是个模板参数,类型是typename
IIRC。
同意老师选择的术语有点奇怪,但可能是由于模板中的class关键字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 vector
s 的更多信息,请参见例如 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++编程中的向量类的主要内容,如果未能解决你的问题,请参考以下文章