动态数组类

在动态数组类中,通过类的成员函数访问数组元素,可以在每次访问之前检查一下下标是否越界,使得数组下标越界的错误能够及早被发现。这种检查,可以通过C++的assert来进行。assert的含义是“断言”,它是标准C++的cassert头文件中定义的一个宏,用来判断一个条件表达式的值是否为true,如果不为true,则程序会中止,并且报告出错误,这样就很容易将错误定位。

以下是一个简单的动态数组类示例

 #include<iostream>
 #include<cassert>
using namespace std;
class point{
public:
    point():x(0),y(0)
    {
        cout<<"default constructor called."<<endl;
    }
    point(int x,int y):x(x),y(y)
    {
        cout<<"constructor called."<<endl;
    }
    ~point()
    {
        cout<<"destructor called."<<endl;
    }
    int getx() const {return x;}
    int gety() const {return y;}
    void movee(int newx,int newy)
    {
        x=newx;
        y=newy;
    }
private:
    int x,y;

};
class arrayofpoints
{
public:
    arrayofpoints(int sizee):sizee(sizee)
    {
           points=new point[sizee];
    }
    ~arrayofpoints()
    {
        cout<<"deleting..."<<endl;
        delete[] points;
    }
    //获得下标为index的数组元素
    point element(int index)
    {
        assert(index>=0&&index<sizee);//如果数组下标越界,程序中止
        return points[index];
    }
private:
    point *points;
    int sizee;
};
int main()
{
    int countt;
    cout<<"please enter the count of points:";
    cin>>countt;
    arrayofpoints points(countt);//创建对象数组
    points.element(0).movee(5,0);//访问数组元素的成员
    points.element(1).movee(15,20);
    return 0;
}

个人理解:简单来说就是通过类的组合,实现 一个类point是另一个数组类arrayofpoints的元素,如果理解不到位,欢迎改正。

时间: 2024-12-20 01:10:12

动态数组类的相关文章

爪哇国新游记之十五----泛型动态数组类

import java.lang.reflect.Array; /** * 泛型动态数组类 * */ public class DynamicArray<T extends Object>{ private T[] arr; private Class<T> type; private int currCount; private static final int InitSize=2; public DynamicArray(Class<T> type){ this.

动态数组类的设计

程序代码如下,主要结合了运算符重载的特点进行数组类的设计.实现了数组的插入,复制等功能,通过这个程序对vector容器有了一定的了解. #include <iostream> using namespace std; class Array { private : int size; int *ptr; public : Array(int s = 0); Array(const Array &a); ~Array(); void push_back(int v); Array &am

封装动态数组类Array

功能: 1.增.删.改.查 2.扩容.缩容 3.复杂度分析 4.均摊复杂度 5.复杂度震荡 分析动态数组的时间复杂度: 分析resize的时间复杂度: public class Array<E> { private E[] data; private int size; // 构造函数,传入数组的容量capacity构造Array public Array(int capacity){ data = (E[])new Object[capacity]; size = 0; } // 无参数的构

vc++基础班[28]---动态数组及动态链表的讲解

C++中也有相应的动态数组.动态链表.映射表的模板类,就是STL中的:vector.list.map 他们属于C++标准中的一部分,对于程序的移植性来说也是不错的,但是在MFC编程中使用 CArray.CList.CMap 会更方便一些! CArray.CList.CMap 的由来?…… ①.数组的基本说明: 数组是固定大小的,相同数据类型的元素的顺序集合,每个元素在数组中有一个固定的位置. 将10个数放入数组中,假设数组的名称为number,可以称数组中第一个元素为 number[0],第二个

数组类的创建(下)

创建StaticArray时,数组的大小必须是明确指定的,是一种限制. 全新的数组类:DynamicArray使用时其对象代表的数组的大小能够动态的指定 1.DynamicArray设计要点 类模板 (任意时刻)动态确定内部数组空间大小  即存储数组的空间可以动态的指定 实现函数返回数组长度 拷贝构造和赋值操作 2.DynamicArray类的声明 3.DynamicArray实现 DynamicArray.h 1 #ifndef DYNAMICARRAY_H 2 #define DYNAMIC

C++——模板、数组类

1.函数模板:可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计. 声明方法:template<typename 标识符> 函数声明 求绝对值的模板 #include<iostream>               --编译器从调用abs函数时实参的类型,推导出函数模板的类型参数.using namespace std;             --如该题从调用abs(int)推导出模板中类型参数T为int型. template<typenam

从零开始实现数据结构(一) 动态数组

从零开始实现数据结构(一) 动态数组 动态数组是所有数据结构中最简单的一种,甚至在很多的语言中,数组本身就是可以不定长的.因为在学习c++的时候,使用动态数组的各种操作都不是很方便(数据结构的学习最好还是c或c++,基础打好了其他的语言数据结构就很简单).所以开始学习如何去实现一个像STL中的vector一样的动态数组. 创建数组基类CArray 因为后面还准备写一个有序数组,所以这里使用一个CArray类,把数组的各种基本特性先创建好.后面需要写什么数组,就可以写它下面的子类,来完成特殊的功能

用最复杂的方式学会数组(Python实现动态数组)

Python序列类型 在本博客中,我们将学习探讨Python的各种"序列"类,内置的三大常用数据结构--列表类(list).元组类(tuple)和字符串类(str). 不知道你发现没有,这些类都有一个很明显的共性,都可以用来保存多个数据元素,最主要的功能是:每个类都支持下标(索引)访问该序列的元素,比如使用语法 Seq[i].其实上面每个类都是使用 数组 这种简单的数据结构表示. 但是熟悉Python的读者可能知道这3种数据结构又有一些不同:比如元组和字符串是不能修改的,列表可以修改.

动态数组模板类

本文需要说明的是一种动态数组模板类(Array),可用于自定义的需要连续空间的容器,能有效得利用分配的空间,提供较高效的数组对象操作,和使用引用计数减少内存复制拷贝. Array与std::vector或std::array不同.Array存储连续的对象,并且在对象内存前开辟一份数组 描述块对数组进行描述.Array存储的数据数量是动态的,可以通过setLength调整,同时可以使用+. +=运算符向数组中追加数据.多个数组实例允许使用同一份数据内容,并且不会重复创建内容,这是该数 组类最重要的