前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >20120918-向量实现《数据结构与算法分析》

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

作者头像
用户1154259
发布2018-01-17 11:59:44
4940
发布2018-01-17 11:59:44
举报
代码语言:javascript
复制
#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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-09-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档