c++顺序表【构造函数、运算符重载、析构函数、增删查改等】

本文详细介绍了C++中顺序表的构造函数、析构函数、拷贝构造函数和赋值函数的原理与实现。包括构造函数的用途、析构函数的作用、拷贝构造函数的场景以及赋值函数的功能。同时,讨论了何时需要自定义这些函数以确保正确处理对象的生命周期和内存管理。
摘要由CSDN通过智能技术生成

在C++中写出构造、析构函数等,实现顺序表的增删查改操作。

下面是头文件,类函数的实现。

#pragma once

typedef int DataType;
class SeqList
{
public:
	SeqList();
	//顺序表只考虑深拷贝
	//传统写法
	//SeqList(const SeqList& s);
	//SeqList& operator=(const SeqList& s);
	//现代写法
	SeqList(DataType* array, const size_t size);
	SeqList(const SeqList& s);
	SeqList& operator=(SeqList& s);
	~SeqList();
	void _CheckCapacity();
	void PushBack(DataType x);
	void PopBack();
	void PushFront(DataType x);
	void PopFront();
	void Insert(size_t pos, DataType x);
	void Erase(size_t pos);
	size_t Find(DataType x);
	void PrintSepList();
private:
	DataType* _array;
	size_t _size;
	size_t _capacity;
};

构造函数、运算符重载、析构函数、增删查改等函数实现如下:

#include<iostream>
using namespace std;

#include"SeqList.h"

SeqList::SeqList()
:_array(NULL)
, _size(0)
, _capacity(0)
{}
//顺序表只考虑深拷贝
//传统写法
//SeqList(const SeqList& s)
//	:_array(new DataType[s._size])
//	,_size(s._size)
//	,_capacity(s._capacity)
//{//内存拷贝,strcpy和strncpy针对char*
//	memcpy(_array, s._array, sizeof(DataType)*(_size));
//}
//SeqList& operator=(const SeqList& s)
//{
//	if (this != &s)
//	{
//		DataType* tmp = new DataType[s._size];
//		delete[] _array;
//		_array = tmp;
//		_size = s._size;
//		_capacity = s._capacity;
//		memcpy(_array, s._array, sizeof(DataType)*(_size));
//	}
//	return *this;
//}
//现代写法
SeqList::SeqList(DataType* array, const size_t size)
:_array(new DataType[size])
, _size(size)
, _capacity(size)
{
	memcpy(_array, array, sizeof(DataType)*size);
}
SeqList::SeqList(const SeqList& s)
:_array(NULL)
{
	SeqList tmp(s._array, s._size);
	swap(_array, tmp._array);
	_size = s._size;
	_capacity = s._size;//容量用_size,防止越界
}
SeqList& SeqList::operator=(SeqList& s)
{
	if (this != &s)
	{
		swap(_array, s._array);
		_size = s._size;
		_capa
使用c++实现的顺序表:多文件编程,层次清晰,函数有注释 SeqList();//构造函数,存储的元素个数设为0 bool setLength(size_t length);//设置已经存储的元素个数 bool addElement(ElemType element);//把某个元素添加到顺序表末尾 bool addElement(ElemType element , size_t n);//插入一个元素,使其成为第n个元素,其余元素后移 bool delElement();//删除所有的元素 bool delElement(size_t n);//删除第n个元素 bool delElement(string elementDetailType,string elementDetail);//通过某个元素细节找到元素,把这个元素删除 bool replaceElement(ElemType element , size_t n);//使用一个元素,替换掉第n个元素 bool swapElement(size_t n1 , size_t n2);//把第n1个元素和第n2个元素交换 ElemType* getElement();//得到数组头的指针 ElemType* getElement(size_t n);//得到第n个元素的指针 size_t getLength();//得到存储的元素个数 size_t getMaxSize();//得到顺序表容量 bool showElementDetail();//输出所有的元素细节 bool showElementDetail(size_t n);//输出第n个元素的细节 bool showElementDetail(string elementDetailType,string elementDetail);//通过某个元素细节找到元素,输出元素所有细节 size_t findElement(string elementDetailType,string elementDetail);//通过某个元素细节找到元素位置 static int inputAInt(int min = 0,int max = 9,int defaultValue = -1);//从键盘读取,限制为一个min到max间的整数,非法情况返回defaultValue void startControlLoop();//打开控制界面 ~SeqList();//析构函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值