颠覆

训练猴子偷情报

原创 c语言描述的动态数组收藏

test.h

#ifndef TEST_H
#define TEST_H
template
<typename T>class Array
{
private:
    T
* parray;                //定义动态数组
    int room;                //存储空间大小的值
public:
    Array()
        :room    (
0)
        ,parray    (NULL)
    {
        parray
=(int*)malloc(sizeof(int)*room);
    }
    
~Array()
    {
        
if(parray!=NULL)
            free(parray);
    }
    
int push_back(T m)        //推入一个数组元素
    {
        room
++;
        parray
=(T*)realloc(parray,sizeof(T)*room);
        
*(parray+room-1)=m;
        
return *(parray+room-1);
    }
    
int sizeof_Array()            //得到数组大小
    {
        
return room;
    }
    
bool remove(int k)            //删除第k个元素
    {
        printf(
"删除元素%d后 ",k);
        
if(k>room-1 || k<0)
        {
            
return false;
        }
        
else
        {
            memmove(parray
+k,parray+k+1,sizeof(T)*(room-1-k));
            room
-=1;
            
return true;
        }
    }
    
bool insert(int k,T element)        //插入一个元素
    {
        printf(
"插入元素%d后 ",k);
        
if(k>room || k<0)
        {
            
return false;
        }
        
else
        {
            room
++;
            parray
=(T*)realloc(parray,sizeof(T)*room);
            memmove(parray
+k+1,parray+k,sizeof(T)*(room-1-k));
            
*(parray+k)=element;
        }
    }
    T query(
int k)                //查询第k个元素的值
    {
        
if(k>room-1 || k<0)
        {
            
return -1;
        }
        
else
        {
            
return *(parray+k);
        }
    }
    
void display()                //显示数组内元素个数
    {
        
for(int i=0;i<room;i++)
            cout
<<query(i)<<endl;
        cout
<<"数组内元素个数"<<sizeof_Array()<<endl;
    }
    T
* begin()
    {
        
return parray;
    }
    T
* end()
    {
        
return parray + room;
    }
};
#endif

 test.cpp

#include<iostream>
#include
"test.h"

using namespace std;

void main()
{
    Array
<int> intArray;
    intArray.push_back(
1);
    intArray.push_back(
2);
    intArray.push_back(
3);
    intArray.push_back(
4);
    intArray.push_back(
5);
    intArray.push_back(
6);
    intArray.push_back(
7);
    intArray.push_back(
8);
    intArray.push_back(
9);
    
/*intArray.display();
    intArray.remove(3);
    intArray.display();
    cout<<intArray.begin()<<endl;
    cout<<intArray.end()<<endl;
    int* ite=NULL;
    for(ite=intArray.begin();ite!=intArray.end();ite++)
    {
        printf("%d ",*ite);
    }
    for(ite=intArray.end();ite!=intArray.begin();ite--)
    {
        printf("%d ",*ite);
    }
*/
}

发表于 @ 2006年10月29日 08:39:00|评论(loading...)

新一篇: 单向链表_学生成绩系统 | 旧一篇: 关于数组的操作

Csdn Blog version 3.1a
Copyright © 颠覆