c++帮助设计类ConstArray和Array,它们表示一种int值的动态数组
c++ Help designing class ConstArray and Array which represent a kind of dynamic array of int values
我想我会先说整个问题,然后在下面评论我的问题。
规格您应该设计两个类ConstArray和Array,它们表示一种int值的动态数组(类似于标准库valarray模板)。
ConstArray类ConstArray的设计应使其行为类似于内容无法更改的常量数组。内存将动态分配和释放。数组的大小和内容是在构造类的对象时确定的。至少应实施以下成员:
size_type, element_type
-对应类型的公共类型定义(typedef)。
size()
-返回数组的元素数。
operator [] (int) const
-返回第k个元素的value元素。
执行深度复制操作的复制构造函数。
一个构造函数,可用于使用C样式数组中的数据初始化数组。
一个析构函数,用于释放任何动态分配的内存。
阵列类Array将从ConstArray派生而来。除了类功能之外,还可以更改数组对象的大小和内容。应提供以下额外成员
operator=(const ConstArray&)
-将ConstArray分配给阵列
operator=(const Array&)
-阵列的分配
operator[](int)
-返回对第k个元素的引用
resize()
-更改数组中的元素数。此操作可能会破坏数组的当前内容。
现在解决我的问题我真的不知道如何在其中实现size_type和element_type。我知道它们是typedef,所以基本上是别名,但从那以后我真的不明白。
什么是"深度复制操作"?
什么是C样式数组?我真的不知道如何设置构造函数来初始化数组的大小。我在哪里确定尺寸?它没有要求用户输入它或任何东西。
谢谢。
我真的不知道如何在其中实现size_type和element_type。
正如你所说,它们只是typedef。您可以在类的作用域中定义类型,例如:
class ConstArray {
public:
typedef int size_type;
};
之后,您可以随时使用size_type
来获取或返回数组的大小。
什么是"深度复制操作"?
当您动态分配数据内存时,最终会得到一个指向数组数据(类型为element_type*
)的指针。浅拷贝只会复制指针,这样您最终会得到两个引用相同共享数据的对象(很危险,因为不清楚谁负责释放内存)。另一方面,深度复制将分配一个新数组,并复制所有数据,这样您最终会得到两个对象,每个对象都有自己的数据数组。
什么是C样式数组?
指向数据的指针,以及数组的大小。在你的作业中,实现一个构造函数ConstArray(element_type* data, size_type size)
。
我在哪里确定尺寸?
您需要使用一个单独的构造函数参数来请求它,请参见上文。使用构造函数的人也知道现有(!)数据数组的大小。
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 有没有一种方法可以在编译时获得作用域类名
- 对于C++中使用智能指针的指针算术限制,有没有一种变通方法
- 一种在C++中读取TXT配置文件的简单方法
- 有没有一种简单的方法可以将矢量 int 集转换为字符串输出?
- 有没有一种优雅的方法来读取二进制文件并将其内容复制到向量<int>
- 是否有一种方法可以通过原型制作更改类型的INT来键入char
- 将所有 int 类型更改为另一种类型,使用 #define 用于大型程序
- 一种在检查十六进制前缀后将字符串转换为int的更干净的方法
- 如何仅验证int类型的输入..以一种非常简单但有效的方式?在c++中
- c++帮助设计类ConstArray和Array,它们表示一种int值的动态数组
- 使用类型"bool"类型的值初始化类型"int &"(非常量限定)的引用是否是一种黑客?
- Qt是否有一种将字节转换为int的方法,反之亦然
- 有没有一种方法可以在C++中增加int的大小而不使用long
- 有没有一种安全的方法可以迭代 std::unique_ptr<int[]>?
- 如何在一种类型的 vector<pair<int,vector> > 中清除()内部向量?
- 是否有一种方法来确保数组变量(unsigned int*)将在内存中
- 使用长int来避免溢出是一种好的做法吗