亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 14-0.cpp

?? Accelerated C++ 課后練習題 本人自己完成、可供參考
?? CPP
字號:
#include<iostream>
#include<memory> 
#include<iterator>
#include<string>
using std::cout;
using std::endl;
using std::cin;

template <class T> class Vec
{
public:
	typedef T* iterator;
	typedef const T* const_iterator;
	typedef size_t size_type;
	typedef T value_type;

	Vec() { create(); }
	explicit Vec(size_type n,const T& t=T()) { create(n,t);}
	
	Vec(const Vec& v) { create(v.begin(),v.end()); }
	Vec& operator=(const Vec&);
	~Vec() { uncreate();}

	T& operator[](size_type i) { return data[i]; }
	const T& operator[](size_type i) const {return data[i];}

	void push_back(const T& t)
	{
		if(avail==limit)
			grow();
		unchecked_append(t);
	}

	iterator erase(iterator);
	void clear();

	size_type size() const {return avail-data;}

	iterator begin() { return data;}
	const_iterator begin() const { return data;}

	iterator end() { return avail;}
	const_iterator end() const { return avail; }
private:
	iterator data;		//first element in the Vec
	iterator avail;		//(one past) the last of element in the Vec
	iterator limit;		//(one past) the allocated menory

	//facilities for memory allocation
	std::allocator<T> alloc;	//object to handle memory allocation
	
	//allocation and initialize the underlying array
	void create();
	void create(size_type,const T&);
	void create(const_iterator, const_iterator);

	//destroy the element in the array and free the memory
	void uncreate();

	//support funcions for push_back
	void grow();
	void unchecked_append(const T&);

};

template<class T>
Vec<T>& Vec<T>::operator =(const Vec& rhs)
{
	//check for self-assignment
	if(&rhs!=this)
	{
		//free the array in the left-hand side
		uncreate();
		//copy elements from the right-hand to the left-hand side
		create(rhs.begin(),rhs.end());
	}
	return *this;
}
template <class T> void Vec<T>::create()
{
	data=avail=limit=0;
}
template <class T> void Vec<T>::create(size_type n, const T& val)
{
	data=alloc.allocate(n,0);
	limit=avail=data+n;
	std::uninitialized_fill(data,limit,val);
}
template <class T> 
void Vec<T>::create(const_iterator i,const_iterator j)
{
	data=alloc.allocate(j-i,0);
	limit=avail=std::uninitialized_copy(i,j,data);
}
template <class T> void Vec<T>::uncreate()
{
	if(data)
	{
		//destroy (in reverse orde) the elements that were constructed
		iterator it=avail;
		while(it!=data)
			alloc.destroy(--it);

		//return all the space that was allocated
		alloc.deallocate(data,limit-data);
	}
	//reset pointers to indicate that the Vec is empty again
	data=limit=avail=0;
}
template <class T> void Vec<T>::grow()
{
	//when growing, allocate twice as much space as currently in use
	size_type new_size=std::_MAX(2*(limit-data),ptrdiff_t(1));

	//allocate new space and copy existing elements to the new space
	iterator new_data=alloc.allocate(new_size,0);
	iterator new_avail=std::uninitialized_copy(data,avail,new_data);

	//return the old space
	uncreate();

	//reset pointers to point to the newly allocate space
	data=new_data;
	avail=new_avail;
	limit=data+new_size;
}
template <class T> void Vec<T>::unchecked_append(const T& val)
{
	alloc.construct(avail++,val);
}
template <class T> Vec<T>::iterator Vec<T>::erase(iterator i)
{
	std::copy(i+1,avail,i);
	--avail;
	return i;
}
template <class T> void Vec<T>::clear()
{
	uncreate();
}



template<class T> class Ptr
{
public:
	//to copy the object conditionally when needed
	void make_unique()
	{
		if(*refptr!=1)
		{
			--*refptr;
			refptr=new size_t(1);
			p=p?clone(p):0;
		}
	}

	Ptr():refptr(new size_t(1)),p(0){}
	Ptr(T* t):refptr(new size_t(1)),p(t){}
	Ptr(const Ptr& h):refptr(h.refptr),p(h.p){++*refptr;}

	Ptr& operator=(const Ptr&);
	~Ptr();
	operator bool() const { return p;}
	T& operator*() const;
	T* operator->() const;
private:
	T* p;
	size_t* refptr;
};
template<class T> 
T& Ptr<T>::operator *() const
{
	if(p)
		return *p;
	throw std::runtime_error("unbound Ptr");
}
template<class T> 
T* Ptr<T>::operator ->() const
{
	if(p)
		return p;
	throw std::runtime_error("unbound Ptr");
}
template<class T> 
Ptr<T>& Ptr<T>::operator =(const Ptr& rhs)
{
	++*rhs.refptr;
	//free the left-hand side, destorying pointers if appropriate
	if(--*refptr==0)
	{
		delete refptr;
		delete p;
	}

	//copy in values from the right-hand side
	refptr=rhs.refptr;
	p=rhs.p;
	return *this;
}
template<class T>
Ptr<T>::~Ptr()
{
	if(--*refptr==0)
	{
		delete refptr;
		delete p;
	}
}

//template< >
Vec<char>* clone(const Vec<char>* vp)
{
    return new Vec<char>(*vp);
}

class Str
{
	friend std::istream& operator>>(std::istream&,Str&);
public:
	Str& operator+=(const Str& s)
	{
		data.make_unique();
		std::copy(s.data->begin(),s.data->end(),std::back_inserter(*data));
		return *this;
	}

	//interface as before
	typedef Vec<char>::size_type size_type;

	//constructors to creator Ptrs
	Str():data(new Vec<char>){}
	Str(const char* cp):data(new Vec<char>)
	{
		std::copy(cp,cp+strlen(cp),std::back_inserter(*data));
	}
	Str(size_type n,char c):data(new Vec<char>(n,c)){}
	template<class In>
	Str(In i,In j):data(new Vec<char>)
	{
		std::copy(i,j,std::back_inserter(*data));
	}

	//call mack_unique as necessary
	char& operator[](size_type i)
	{
		data.make_unique();
		return (*data)[i];
	}
	const char& operator[](size_type i)const{return (*data)[i];}
	size_type size()const{return data->size();}
private:
	//store a Ptr to a vector
	Ptr<Vec<char> > data;
};
std::ostream& operator<<(std::ostream& os, const Str& s)
{
	for(Str::size_type i=0;i<s.size();++i)
		os<<s[i];
	return os;
}
Str operator+(const Str& s,const Str& t)
{
	Str r=s;
	r+=t;
	return r;
}

int main()
{
	Str s1="cheng",s2=", ning";

	cout<<(s1+s2)[3]<<endl;
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
秋霞电影网一区二区| 日韩美女视频在线| 欧美三级韩国三级日本一级| 欧美日韩精品综合在线| 日韩欧美激情一区| 国产精品网站在线| 亚洲天堂2016| 奇米影视在线99精品| 粉嫩蜜臀av国产精品网站| 欧美成人官网二区| 国产日韩欧美制服另类| 一区二区激情小说| 黄网站免费久久| 日本韩国欧美国产| 欧美成人综合网站| 一区二区三区欧美亚洲| 精品一区二区在线观看| 99精品视频在线免费观看| 日韩手机在线导航| 综合激情成人伊人| 久久9热精品视频| 色婷婷综合在线| 26uuu久久天堂性欧美| 一区二区欧美精品| 国产一区二区三区免费观看| 91老师国产黑色丝袜在线| 日韩免费看的电影| 伊人夜夜躁av伊人久久| 国产自产高清不卡| 欧美日韩精品欧美日韩精品一综合| 精品国产凹凸成av人网站| 亚洲曰韩产成在线| 国产91清纯白嫩初高中在线观看| 欧美日韩成人激情| 中文字幕日本乱码精品影院| 久久99精品久久久久久久久久久久| 色综合久久久久综合| 久久在线免费观看| 日韩激情视频网站| 色婷婷激情一区二区三区| 国产日韩精品一区二区三区 | 激情另类小说区图片区视频区| 91黄色免费看| 国产精品国产三级国产三级人妇| 麻豆久久一区二区| 欧美日韩精品一区二区三区| 国产精品久久网站| 久久 天天综合| 欧美乱妇20p| 一区二区免费看| 不卡电影免费在线播放一区| 欧美精品一区二区三区在线| 偷拍一区二区三区| 欧美三级电影精品| 亚洲精品日韩一| a级高清视频欧美日韩| 久久精品在线观看| 国内精品国产成人| 精品少妇一区二区三区在线播放 | 99国产精品国产精品久久| 国产女人水真多18毛片18精品视频| 日韩av不卡在线观看| 欧美日韩一二三| 亚洲午夜av在线| 在线看国产一区二区| 亚洲欧美另类在线| av福利精品导航| 国产精品福利一区| av不卡在线播放| 国产精品久久久久aaaa| 不卡av免费在线观看| 欧美高清在线精品一区| 国产精品一区二区黑丝| 久久久国产综合精品女国产盗摄| 黄色小说综合网站| 久久久久久毛片| 国产一区二区精品在线观看| 久久影音资源网| 国产伦精品一区二区三区免费| 26uuu精品一区二区三区四区在线| 国产在线一区二区综合免费视频| 亚洲精品在线三区| 国产精品一区二区免费不卡| 日本一区二区不卡视频| av电影天堂一区二区在线观看| 最新国产の精品合集bt伙计| 色成年激情久久综合| 亚洲一区二区三区在线| 在线播放一区二区三区| 青青草精品视频| 久久久久久久久久久久电影 | 国产精品视频看| 99久久精品情趣| 亚洲资源在线观看| 欧美日本一区二区三区四区| 免费观看30秒视频久久| 久久久噜噜噜久久中文字幕色伊伊 | 国产乱码精品一区二区三区av | 91在线丨porny丨国产| 亚洲精选一二三| 欧美人伦禁忌dvd放荡欲情| 免费人成在线不卡| 久久色在线观看| 91一区二区三区在线观看| 亚洲国产综合人成综合网站| 欧美成人伊人久久综合网| 九色综合狠狠综合久久| 亚洲国产精品黑人久久久| 91丝袜国产在线播放| 午夜视黄欧洲亚洲| 久久伊99综合婷婷久久伊| 9人人澡人人爽人人精品| 亚洲成av人在线观看| 日韩精品中午字幕| 播五月开心婷婷综合| 亚洲丰满少妇videoshd| 久久久久国产精品免费免费搜索| 91伊人久久大香线蕉| 美女高潮久久久| 国产精品午夜在线观看| 欧美日产在线观看| 成人精品视频一区二区三区尤物| 亚洲一区二区精品视频| 久久亚区不卡日本| 在线一区二区视频| 国产麻豆欧美日韩一区| 亚洲女厕所小便bbb| 精品国产乱码久久久久久闺蜜| 91在线精品秘密一区二区| 蜜桃视频在线一区| 亚洲精品视频一区| 久久人人超碰精品| 欧美日韩一级视频| 成人av电影免费观看| 日韩精品视频网| 亚洲视频在线观看一区| 精品国内片67194| 欧美性猛交xxxx黑人交| 国产黄色精品视频| 日韩av一二三| 亚洲欧美日韩人成在线播放| 日韩精品一区在线| 欧美性生活影院| 成人理论电影网| 国模一区二区三区白浆| 午夜国产精品一区| 最新国产成人在线观看| 久久久天堂av| 日韩三级精品电影久久久| 91极品美女在线| av中文字幕不卡| 国产麻豆视频一区| 久久精品国产免费看久久精品| 亚洲卡通欧美制服中文| 中文在线免费一区三区高中清不卡| 欧美一区二区三区免费在线看| 色哟哟国产精品| 成人av在线播放网址| 国产一区免费电影| 久久av资源网| 免费在线观看一区二区三区| 亚洲6080在线| 亚洲精品五月天| 中文字幕在线观看一区| 国产免费观看久久| 久久久久综合网| 久久一夜天堂av一区二区三区 | 免费久久精品视频| 天天色天天操综合| 午夜精品福利视频网站| 亚洲一区二区中文在线| 亚洲黄色片在线观看| 亚洲天堂福利av| 亚洲视频在线一区观看| 亚洲三级在线看| 国产精品入口麻豆原神| 国产欧美一区二区在线| 国产午夜亚洲精品羞羞网站| 久久综合999| 国产日韩亚洲欧美综合| 国产日韩欧美不卡| 国产精品网站一区| 亚洲欧洲99久久| 亚洲欧美日韩电影| 亚洲综合久久av| 亚洲影视在线观看| 亚洲成人第一页| 日本va欧美va欧美va精品| 日韩高清在线一区| 蜜臀av一级做a爰片久久| 蜜桃一区二区三区四区| 狠狠久久亚洲欧美| 国产乱国产乱300精品| 国产精品一区二区91| 成人网在线播放| 99久久国产免费看| 欧美视频一区二区三区四区| 欧美三级视频在线| 欧美一级片在线| 亚洲精品在线观看网站|