封装STL中vector提供MFC中的CArry接口

CArrayEx是一个模板类,它封装了STL中的vector,提供了与MFC CArray类似的接口。这个类支持添加、获取、设置元素,以及插入、删除、拷贝等操作,并允许直接访问内部的vector。
摘要由CSDN通过智能技术生成
封装STL中vector提供MFC中的CArry接口

简介:通过封装STL模板库中vector数组,提供MFC中的CArray的相关功能,同时提供vector访问接口


//
//	通过封装STL模板库中vector数组,提供MFC中的CArray的相关功能,同时提供vector访问接口
//
#ifndef		__CARRAYEX_H__
#define		__CARRAYEX_H__

#include <vector>

#if !defined(_WIN32)

#include <stdexcept>

#endif


//数组模板类
template<class TYPE>
class CArrayEx
{
public:
	typedef TYPE _Ty;
	typedef CArrayEx<TYPE> _Myt;
	typedef typename std::vector<TYPE>::size_type size_type;
	typedef typename std::vector<TYPE>::const_iterator const_iterator;
	typedef typename std::vector<TYPE>::iterator iterator;
	typedef typename std::vector<TYPE>::const_reverse_iterator const_reverse_iterator;
	typedef typename std::vector<TYPE>::reverse_iterator reverse_iterator;
	typedef typename std::vector<TYPE>::const_reference const_reference;
	typedef typename std::vector<TYPE>::reference reference;

	// 构造函数
	CArrayEx();
	// 析构函数
	~CArrayEx();

	// 获取大小
	INT_PTR GetSize() const;
	// 获取个数
	INT_PTR GetCount() const;
	// 当前数组是否为空
	BOOL IsEmpty() const;
	// 获取数组下标上界,如果数组为空,则为-1
	INT_PTR GetUpperBound() const;
	// 设置数组大小
	void SetSize(INT_PTR nNewSize, INT_PTR nGrowBy = -1);
	// 获取指定位置只读元素
	const TYPE& GetAt(INT_PTR nIndex) const;
	// 获取指定位置元素
	TYPE& GetAt(INT_PTR nIndex);
	// 设置指定位置元素
	void SetAt(INT_PTR nIndex, TYPE const& newElement);
	// 获取指定位置的只读元素
	const TYPE& ElementAt(INT_PTR nIndex) const;
	// 获取指定位置的元素
	TYPE& ElementAt(INT_PTR nIndex);
	// 获取数组的数据首地址,返回只读
	const TYPE* GetData() const;
	// 获取数组的首地址,可写
	TYPE* GetData();
	// 直接获取内部数组
	std::vector<TYPE>* GetArray();

	// 将元素放在指定的位置,若该位置超出数组长度,则自动增长
	void SetAtGrow(INT_PTR nIndex, TYPE const& newElement);
	// 将当前的数据加到数组末尾
	INT_PTR Add(TYPE const& newElement);
	// 拼接两个数组,将指定的数组放到当前数组末尾
	INT_PTR Append(const CArrayEx& src);
	// 数组拷贝,将另一个数组的数据拷贝过来
	void Copy(const CArrayEx& src);

	// 操作符重载
	// 下标操作符重载,返回指定位置只读元素
	const TYPE& operator[](INT_PTR nIndex) cons
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值