20120918-向量实现《数据结构与算法分析》


#include <iostream> #include <list> #include <string> #include <vector> #include <bitset> using namespace std; template <typename Container,typename Object> void change(Container & c,const Object & newValue)//改变新值 { typename Container::ierator itr = c.begin(); while( itr != c.end()) { *itr++ = newValue; } } template <typename Container,typename Object> void print(const list<int> & lst,ostream & out = cout)//打印值,并且归0 { typename Container::iterator itr = lst.begin(); while( itr != lst.end()) { cout<<*itr<<endl; *itr=0; itr++; } } template <typename Container> void printCollection( const Container & c)//打印任何容器 { if (c.empty()) cout<<"(empty)"; else { typename Container::const_iterator itr = c.begin(); cout << "[" << *itr++; while(itr != c.end()) { cout << ","<<*itr++; } cout<<"]"<<endl; } } template <typename Object>//Vector类向量实现 class Vector { public: explicit Vector(int initSize = 0):theSize(initSize),theCapacity(initSize+SPARE_CAPACITY) { objects = new Object[theCapacity]; } Vector(const Vector & rhs) : objects(NULL) { operator=(rhs); } ~Vector() { delet [] objects; } const Vector & operator = (const Vector & rhs) { if(this != &rhs) { delete [] objects; theSize = rhs.size(); theCapacity = rhs.theCapacity(); objects = new Object[ capacity() ]; for(int k=0; k<size() ; k++) objects[k] = rhs.objects[k]; } return *this; } void resize( int newSize) { if(newSize > theCapacity) reserve( newSize*2+1); theSize = newSize; } void reserve( int newCapacity) { if(newCapacity < theSize) return; Object *oldArray = objects; objects = new Object[ newCapacity]; for( int k=0; k<theSize ; k++) objects[k] = oldArray[k]; theCapacity = newCapacity; delete [] oldArray; } Object & operator[](int index) { return objects[index]; } const Object & operator[](int index) const { return objects[index]; } bool empty() const { return size() == 0; } int size() const { return theSize; } int capacity() const { return theCapacity; } void push_back(const Object & x) { if(theSize == theCapacity) reserve( 2 * theCapacity + 1 ); objects[theSize++] =x; } void pop_back() { theSize--; } const Object & back() const { return objects[theSize - 1]; } typedef Object * iterator; typedef const Object * const_iterator; iterator begin() { return &objects[0]; } const_iterator begin() const { return &objects[0]; } iterator end() { return &objects[size()]; } const_iterator end() const { return &objects[size()]; } enum {SPARE_CAPACITY=16}; private: int theSize; int theCaacity; Object *objects; } int main() { list<string> a; list<int> b; list<int> c; c.push_back(123); a.push_back("123"); a.push_back("ooo"); a.push_back("456"); a.push_back("ooo"); a.push_back("789"); printCollection(a); printCollection(b); printCollection(c); return 0; }

  前两部分是list的应用

  后一部分是vector的实现方法:可惜我不会直接测试...不知道怎么直接用.....

  今天不知道怎么的,莫名的很生气.....fuck

转载于:https://my.oschina.net/u/204616/blog/545145

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值