还是那个波斯猫!

      从   浅蓝 玩到 深蓝!

逝者如斯
网志分类
· 所有网志 (24)
· frontdoor (3)
· 人生一壶茶 (2)
· play pc! (3)
· 程序设计 (4)
· 逢考必过 (12)
搜索本站
友情链接
· 我的歪酷 非非共享界
· 张磊
· 林乐
· dodo
· laten

订阅 RSS

0009846

歪酷博客


« 上一篇: 关于快捷方式的一些发现 下一篇: 这里是teacher lee上课编过的(set class)!!! »
boss bao @ 2006-06-02 10:51

//vector class
#include <iostream>
using namespace std;
class CMyVector {
private:
 int *m_pDatas;
 int m_size;
 int m_bufferSize;
public:
 CMyVector ();
 CMyVector (int n);
 CMyVector (const  CMyVector &);
 int size () const {
  return m_size;
 }
 void push_back (int x);
 CMyVector & operator = (const CMyVector &);
 ~CMyVector () {
  delete [] m_pDatas;
 }
 int & operator [] (int index) const;
};

CMyVector::CMyVector ()
: m_size (0), m_bufferSize (0), m_pDatas (NULL)
{}

CMyVector::CMyVector (int n)
:m_size (n), m_bufferSize (n)
{
 m_pDatas = new int [m_bufferSize];
}

CMyVector::CMyVector (const  CMyVector &rhs)
: m_size (rhs.m_size), m_bufferSize (rhs.m_bufferSize), m_pDatas (NULL)
{
 if (m_bufferSize > 0) {
  m_pDatas = new int [m_bufferSize];
  for (int i = 0; i < m_size; i++)
   m_pDatas [i] = rhs.m_pDatas [i];
 }
}
void CMyVector::push_back (int x)
{
 if (m_size >= m_bufferSize) {
  int *pBuffer = new int [m_bufferSize + 10];
  if (m_size > 0)
   memcpy (pBuffer, m_pDatas, m_size* sizeof (int));
  delete [] m_pDatas;
  m_pDatas = pBuffer;
  m_bufferSize += 10;
 }
 m_pDatas [m_size++] = x;
}

CMyVector & CMyVector::operator = (const CMyVector &rhs)
{
 if (this == &rhs)
  return *this;
 delete [] m_pDatas;

 m_size = rhs.m_size;
 m_bufferSize = rhs.m_bufferSize;
 m_pDatas = NULL;
 if (m_bufferSize > 0) {
  m_pDatas = new int [m_bufferSize];
  for (int i = 0; i < m_size; i++)
   m_pDatas [i] = rhs.m_pDatas [i];
 }

 return *this;
}

int&  CMyVector::operator [] (int index) const
{
 if (index >= 0 && index < m_size)
  return m_pDatas [index];
 throw "Overflow";
}

void Print (const CMyVector &V)
{
 for (int i = 0; i < V.size (); i++) {
  cout << V[i] <<"\t";
 }
 cout << endl;
}

int main ()
{
 try {
  int n;
  cin >> n;
  CMyVector  V1 (n);
  
  for (int i = 0; i < V1.size (); i ++) {
   V1 [i] = 150 * i;
  }
  V1.push_back (100);
  V1.push_back (200);
  CMyVector  V2 (V1);
  V2.push_back (300);

  CMyVector  V3;
  V3 = V1;
  V3.push_back (400);

  Print (V1);
  Print (V2);
  Print (V3);

  CMyVector  V4;

  V4 [4] = 5;

  cout << V4 [6] << endl;
  cout << "Finish" << endl;
 }
 catch (int no) {
  cout << "Error No :" << no << endl;
 }
 catch (char *errMsg) {
  cout << errMsg << endl;
 }
 catch (...) {
 }
 cout << "complete" << endl;
 return 0;
}





评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定