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 IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?