20120918-向量实现《数据结构与算法分析》
<br>#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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步