封装STL中vector提供MFC中的CArry接口
简介:通过封装STL模板库中vector数组,提供MFC中的CArray的相关功能,同时提供vector访问接口
简介:通过封装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