固定长度数组
2013-09-09 18:30
387 查看
实际应用中,有很多用到定长数组的时候,下面结合模板类给出一个定长数组的实现方式。
同时实现了数组比较等功能,容易拓展
#ifndef __FIXED_ARRAY_H #define __FIXED_ARRAY_H #include <stdio.h> template <class T, unsigned int SIZE> class CFixedArray { public: CFixedArray(); CFixedArray(const CFixedArray &right); CFixedArray(const T *pData, unsigned int iSize); ~CFixedArray(); CFixedArray & operator = (const CFixedArray &right); bool operator == (const CFixedArray &right) const; bool operator != (const CFixedArray &right) const; bool operator < (const CFixedArray &right) const; public: T m_data[SIZE]; }; template <class T, unsigned int SIZE> CFixedArray<T, SIZE>::CFixedArray() { memset(m_data, 0, sizeof(m_data)); } template <class T, unsigned int SIZE> CFixedArray<T, SIZE>::CFixedArray(const CFixedArray<T, SIZE> &right) { memcpy(m_data, right.m_data, sizeof(m_data)); } template <class T, unsigned int SIZE> CFixedArray<T, SIZE>::CFixedArray(const T *pData, unsigned int iSize) { if (pData != NULL) { if (iSize < SIZE) { memcpy(m_data, pData, iSize * sizeof(T)); memset(m_data + iSize, 0, (SIZE - iSize) * sizeof(T)); } else { memcpy(m_data, pData, sizeof(m_data)); } } else { memset(m_data, 0, sizeof(m_data)); } } template <class T, unsigned int SIZE> CFixedArray<T, SIZE>::~CFixedArray() { } template <class T, unsigned int SIZE> CFixedArray<T, SIZE> & CFixedArray<T, SIZE>::operator = (const CFixedArray<T, SIZE> &right) { memcpy(&m_data, &right.m_data, sizeof(m_data)); return *this; } template <class T, unsigned int SIZE> bool CFixedArray<T, SIZE>::operator == (const CFixedArray<T, SIZE> &right) const { return (memcmp(m_data, right.m_data, sizeof(m_data)) == 0); } template <class T, unsigned int SIZE> bool CFixedArray<T, SIZE>::operator != (const CFixedArray<T, SIZE> &right) const { return (memcmp(m_data, right.m_data, sizeof(m_data)) != 0); } template <class T, unsigned int SIZE> bool CFixedArray<T, SIZE>::operator < (const CFixedArray<T, SIZE> &right) const { for (unsigned int i = 0; i < SIZE; ++i) { if (m_data[i] < right.m_data[i]) { return true; } } return false; }
同时实现了数组比较等功能,容易拓展
相关文章推荐
- C#中如何申明固定长度的数组
- 获取数组的固定长度的子数组
- 怎样只接受固定长度数组为参数 & 数组形参
- 自定义队列(优化了数组固定长度的弊端)以及集合中的一些重点内容
- java将固定长度的byte数组转成String,并去掉后面多余的0
- c# 字节级别分割为等长字符串数组,分割中英混合字符串为固定长度
- [C++]char转换为string ,固定长度的char数组转换为string
- 封装固定长度字符数组的模板容器类
- 给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数,请在这个特殊数组中找出给定的整数
- 蓝牙通信中读取固定长度数组的解决
- 直接排序(固定长度数组)
- IPHONE 开发 6 -- Object C 02 常用数据类型[整型浮点型,短长整型],数组(固定长度,变长)
- PHP SPL标准库之数据结构固定长度数组(SplFixedArray)
- TCHAR 生命长度固定数组如何赋值
- 生成某个范围内N个不重复随机数与生成固定长度数组
- java将固定长度的byte数组转成String,并去掉后面多余的0
- 使用数组实现固定长度的队列结构
- 每日一练——从长度为n的数组里选出m个数使和为固定值sum
- 生成某个范围内N个不重复随机数与生成固定长度数组
- 把字符串分割成固定长度的片段,返回数组