向量容器vector模板
来源:互联网 发布:淘宝分销和代销的区别 编辑:程序博客网 时间:2024/06/12 01:13
参考C++ vector类模板,设计实现自己的CVector向量类模板,完成下列基本功能: 构造、析构、size、push_back和下标访问,在通过下标访问越界时抛出异常。编写测试程序,利用该类模板完成一个解释器,它接受命令,执行相应操作。
#include#include using namespace std;#define SIZE 10template class CVector {private: T *m_data; //数据 int m_size; //向量长度 int capacity; //向量容器初始大小public: CVector() { capacity = SIZE; m_data = new T[capacity]; m_size = 0; }//无参构造函数,向量容器为初始长度 CVector(int n) : m_size(n), capacity(n) { m_data = new T[capacity]; }//有参构造函数,参数为向量容器的长度 CVector(int n, T x) : m_size(n), capacity(n) { capacity = SIZE; m_data = new T[capacity]; for (int i = 0; i < m_size; i++) m_data[i] = x; }//有参构造函数,参数为换成那个度与初始化内容 CVector(const CVector &v) { m_size = v.m_size; capacity = v.capacity; m_data = new T[capacity]; for (int i = 0; i < m_size; i++) m_data[i] = v.m_data[i]; }//拷贝构造函数 ~CVector() { delete[]m_data; m_size = 0; capacity = 0; }//析构函数 int size() const { return m_size; }//返回向量容器的长度 void resize(int newSize) { if (newSize < capacity) return;//若不符合条件则退出 T *temp = new T[newSize];//定义更大的空间 for (int i = 0; i < m_size; i++) temp[i] = m_data[i]; delete[]m_data;//释放原有空间 m_data = temp;//将更大的空间设置为正式空间 capacity = newSize;//定义新的容器大小 }//扩充向量容器 void push_back(T x) { if (m_size == capacity) resize(capacity * 2); m_data[m_size++] = x; }//向向量后面插入一个元素 void pop_back() { m_size--; }//删除最后一个数据 T &operator[](int i) { if (i >= m_size || i < 0) throw "invalid index:";//下标异常抛出 return m_data[i]; }//[]下标运算符的重载};template void Order(T &Order) //命令函数模板{ int n; cin >> n; CVector v(n); string order; //命令输入 T x; //追加的对象 int index; //插入地址的下标 while (cin >> order) { try { if (order == "push") {//push对象,在向量尾部追加对象 cin >> x; v.push_back(x); } else if (order == "put") {//put下标加对象,在特定下标处插入对象 cin >> index >> x; v[index] = x; } else if (order == "fetch") {//fetch用下标取出对象,下标越界处理 cin >> index; cout << v[index] << " "; } else if (order == "quit") break; } catch (const char *msg) { cout << msg << index << " "; } } cout << endl;}int main(){ string order; int n; while (cin >> order) { if (order == "int") Order(n); if (order == "string") Order(order); } return 0;}
阅读全文
0 0
- 向量容器vector模板
- vector 向量容器
- Vector(向量容器)
- vector向量容器
- C++ Vector 向量容器
- vector向量容器
- STL向量容器vector
- vector向量容器
- vector向量容器
- STL vector向量容器
- vector 向量容器
- vector向量容器
- vector向量容器
- STL---之vector向量容器
- vector 向量容器基础应用
- STL 向量容器(vector)
- STL 向量容器(vector)
- STL 向量容器(vector)
- 数据库索引到底是什么,是怎样工作的?
- 文章标题
- 第一讲 Hello FreeMarker
- 欢迎使用CSDN-markdown编辑器
- 初涉配置struts
- 向量容器vector模板
- pandas中apply筛选数据
- Kali渗透测试——快速查找Metasploit的模块
- 二分搜索——34. Search for a Range
- Android笔记(100)通知流程
- world final2017-E 二分
- maven仓库快速镜像
- 数据库实验一( 表、视图和索引的管理 )
- [leetcode]单链表类题目总结(应用双指针)