动态数组

类声明

template <class T = int>
  class D_Array{
	private:
          T* _data;
          int _capacity;
          int _size;
          bool _flag;
	protected:
          inline void Expansion();
	public:
	  D_Array(int capacity = DEFAULT_CAPACITY, T const& value = 0);
	  ~D_Array();
	  inline int size() const;
	  inline int capacity() const;
	  inline void insert(int index, T const& value);
	  inline void push_back(T& value);
	  inline void remove(int index);
	  inline int find(T const& value) const;
	  inline void m_print() const;
	  inline T& operator [] (int index);
  };
/**
 * @brief 动态数组
 *  private:
 *   T _data; 数组内元素
 *   int _capacity; 数组容量
 *   int _size; 有效元素个数
 *   bool _flag; 是否允许扩容
 *  protected:
 *   void Expansion(); 扩容
 *  public:
 *   D_Array(); 构造
 *   ~D_Array(); 析构
 *   void insert(int index, T& value); 插入 
 *   void push_back(T& value); 尾增
 *   void remove(int index); 移除
 *   int find(T& value) const; 查找 value 返回下标 或 -1
 *   void m_print() const; 打印
 *   T& operator [] (int index); 重载[]
 */

main.cpp

#include <iostream>
#include "DynamicArrays.h"
using namespace CC;
int main()
{
	//DynamicArrays
	D_Array<> nums;// 默认类型为 int
	for(auto i:{1,2,3,4,5,6})
		nums.push_back(i);
	nums.m_print();
	nums[0] = 8;
	nums.m_print();
	nums.insert(-1, 1); // -1的后面插入 --> data[0] 为 1
	nums.m_print();
        std::cout << nums.find(8) << " " << nums.find(9) << "\n";
	std::cout << nums.capacity() << "\n";
	for(auto i:{7,8,9,10,11,12,13,14,15,16,17})
		nums.push_back(i);
	std::cout << nums.capacity() << "\n";//扩容
	//__EOF__
}
1 2 3 4 5 6
8 2 3 4 5 6
1 8 2 3 4 5 6
1 -1
16
32

源码

posted @ 2023-01-02 12:13  小麟qwq  阅读(33)  评论(0)    收藏  举报