vector.cpp
来自「常用数据结构集体实现」· C++ 代码 · 共 83 行
CPP
83 行
#ifndef VECTOR_CPP_#define VECTOR_CPP_#include "vector.h"#include "StartConv.h"template <class Object>const vector<Object> & vector<Object>::operator=( const vector<Object> & 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;}template <class Object>void vector<Object>::resize( int newSize ){ if( newSize > theCapacity ) reserve( newSize * 2 ); theSize = newSize;}template <class Object>void vector<Object>::reserve( int newCapacity ){ Object *oldArray = objects; int numToCopy = newCapacity < theSize ? newCapacity : theSize; newCapacity += SPARE_CAPACITY; objects = new Object[ newCapacity ]; for( int k = 0; k < numToCopy; k++ ) objects[ k ] = oldArray[ k ]; theSize = numToCopy; theCapacity = newCapacity; delete [ ] oldArray;}template <class Object>void vector<Object>::push_back( const Object & x ){ if( theSize == theCapacity ) reserve( 2 * theCapacity + 1 ); objects[ theSize++ ] = x;}template <class Object>void vector<Object>::pop_back( ){ if( empty( ) ) throw UnderflowException( "Cannot call pop_back on empty vector" ); theSize--;}template <class Object>const Object & vector<Object>::back( ) const{ if( empty( ) ) throw UnderflowException( "Cannot call back on empty vector" ); return objects[ theSize - 1 ];}#include "EndConv.h"#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?