标签:style blog class code tar int
数组有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根据要求进行内存分配,这种方法称为动态存储分配。
所有动态存储分配都在堆区中进行。当程序运行到需要一个动态分配的变量或对象时,必须向系统申请取得堆中的一块所需大小的存贮空间,用于存贮该变量或对象。当不再使用该变量或对象时,也就是它的生命结束时,要显式释放它所占用的存贮空间,这样系统就能对该堆空间进行再次分配,做到重复使用有限的资源。
动态分配格式:IntArray.h
class IntArray { private : int _size; //数组大小 int *p; //数组指针 public: IntArray(int array_size); IntArray(int *array,int array_size); IntArray(IntArray &arr);//拷贝构造函数 ~IntArray(); void sort(); //排序 int find(int value);//查找 int max();//最大元素 int min();//最小元素 int size();//数组大小 void display(); };
#include <iostream> //io流文件引入 #include "IntArray.h" using namespace std; /************************************************************************/ /* 构造方法 默认数组元素初始化为0 */ /************************************************************************/ IntArray::IntArray(int array_size) { _size = array_size; p = new int[array_size]; for (int i = 0; i<array_size; i++) { p[i] = 0; } } /************************************************************************/ /* 构造方法 用一个数组初始化另外一个数组 */ /************************************************************************/ IntArray::IntArray(int *array,int array_size) { _size = array_size; p = new int[array_size]; for (int i = 0; i<array_size; i++) { p[i] = array[i]; } } /************************************************************************/ /* 计算数组最大值 */ /************************************************************************/ int IntArray::max() { int max = -1; for (int i = 0; i< _size; i++) { if (p[i] > max) { max = p[i]; } } return max; } /************************************************************************/ /* 计算数组最小值 */ /************************************************************************/ int IntArray::min() { int min = 10000; for (int i = 0; i<_size; i++) { if(p[i] < min) { min = p[i]; } } return min; } /************************************************************************/ /* 查找指定元素,返回在数组中的位置 */ /************************************************************************/ int IntArray::find(int value) { int index = -1; for (int i = 0; i<_size; i++) { if(p[i] == value) { index = i; } } return index; } /************************************************************************/ /* 返回数组大小 */ /************************************************************************/ int IntArray::size() { return _size; } /************************************************************************/ /* 显示数组元素中的值 */ /************************************************************************/ void IntArray::display() { for (int i = 0; i<_size; i++) { cout<<p[i]<<" "; } cout<<endl; } /************************************************************************/ /* 对数组排序,升序 or 降序 */ /************************************************************************/ void IntArray::sort() { } /************************************************************************/ /* 析构函数,释放内存空间 */ /************************************************************************/ IntArray::~IntArray() { delete p; } /************************************************************************/ /* 主调函数 */ /************************************************************************/ int main(void) { int intA[] = {10,2,4,6,7,98,32,4}; IntArray intArr(intA,8); cout<<"size:"<< intArr.size() <<endl; cout<<"max:"<<intArr.max() <<endl; cout<<"min:"<< intArr.min() <<endl; cout<<"find:"<< intArr.find(98) <<endl; intArr.display(); intArr.~IntArray(); }泛型设计(generic programming)
template < class elemType > class Array { public: Array( int size ); Array( elemType *array, int array_size ); virtual elemType min() ; virtual elemType max() ; private: int _size; elemType *ia; };以后当我们实例化 instantiate 一个特定类型的实例时如 int double 或string 类型的 Array 数组就可以在程序中直接使用这三个实例.
《C++ Primer》 对象、数组、基于对象设计、泛型设计,布布扣,bubuko.com
《C++ Primer》 对象、数组、基于对象设计、泛型设计
标签:style blog class code tar int
原文地址:http://blog.csdn.net/cdl2008sky/article/details/25211081