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

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

?? 12-9.cpp

?? Accelerated C++ 課后練習題 本人自己完成、可供參考
?? CPP
字號:
#include<iostream>
#include<memory> 
#include<iterator>
#include<string>
#include<fstream>
#include<iterator>
using std::ostream_iterator;
using std::string;
using std::cout;
using std::endl;
using std::cin;
using std::allocator;
using std::_MAX;
using std::uninitialized_copy;
using std::uninitialized_fill;
using std::istream;
using std::ostream;
using std::ifstream;
using std::ofstream;

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
	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;
	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=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=_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=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();
}



class Str
{
	//input operator 
	friend istream& operator>>(istream&, Str&);
	friend istream& getline(istream&,Str&);
public:
	operator bool()
	{
		return size()!=0?true:false;
	}
	Str& operator+(const char* s)
	{
		std::copy(s,s+strlen(s),std::back_inserter(data));
		return *this;
	}
	Str& operator+=(const Str& s)
	{
		std::copy(s.data.begin(),s.data.end(),std::back_inserter(data));
		return *this;
	}

	typedef Vec<char>::size_type size_type;
	
	//default constructor ;create an empty Str
	Str(){}

	//create a Str containing  n copies c
	Str(size_type n,char c):data(n,c){}

	//create s Str from a null-teminated array of char
	Str(const char* cp)
	{
		std::copy(cp,cp+strlen(cp),std::back_inserter(data));
	}

	//create a Str from the rang denoted by iterators b and e
	template<class In> Str(In b,In e)
	{
		std::copy(b,e,std::back_inserter(data));
	}

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

	size_type size() const{return data.size();}
	
	const char* c_str() const;
	const char* c_date() const;
	const char* copy(char*,size_type) const;

	typedef Vec<char>::iterator iterator;
	typedef Vec<char>::const_iterator const_iterator;
	iterator begin(){return data.begin();}
	const_iterator begin() const {return data.begin();}
	iterator end(){return data.end();}
	const_iterator end() const {return data.end();}
private:
	Vec<char> data;
};

istream& getline(istream& is,Str& s)
{
	//obliterate existing value (s)
	s.data.clear();

	//read and discard leading whitespace
	char c;
	while(is.get(c)&&isspace(c))
		;//nothing to do, except testing the condition
		//if still something to read, do so until next whitespace charactor
	if(is)
	{
		do
			s.data.push_back(c);	//compile error! data is private
		while(is.get(c)&&c!='\n');
	}
	return is;
}
const char* Str::copy(char* p,size_type n) const
{
	if(strlen(p)<n)
		throw "benefit!";
	else
	{
		std::copy(data.begin(),data.begin()+n,p);
		return p;
	}
}
const char* Str::c_str() const
{
	char* p=new char[size()];
	std::copy(data.begin(),data.end(),p);
	p[size()]=0;
	return p;
}
const char* Str::c_date() const
{
	char* p=new char[size()-1];
	std::copy(data.begin(),data.end(),p);
	return p;
}
ostream& operator<<(ostream& os, const Str& s)
{
	std::copy(s.begin(),s.end(),ostream_iterator<char>(cout));
	return os;
}

istream& operator>>(istream& is, Str& s)
{
	//obliterate existing value (s)
	s.data.clear();

	//read and discard leading whitespace
	char c;
	while(is.get(c)&&isspace(c))
		;//nothing to do, except testing the condition

	//if still something to read, do so until next whitespace charactor
	if(is)
	{
		do
			s.data.push_back(c);	//compile error! data is private
		while(is.get(c)&&!isspace(c));

		//if we read whitespace, then put it back on the stream
		if(is)
			is.unget();
	}
	return is;
}

Str operator+(const Str& s,const Str& t)
{
	Str r=s;
	r+=t;
	return r;
}
int strcmp(const Str& s1,const Str& s2)
{
	return strcmp(s1.c_str(),s2.c_str());
}
bool operator==(const Str& s1,const Str& s2)
{
	return strcmp(s1,s2)==0?true:false;
}
bool operator!=(const Str& s1,const Str& s2)
{
	return strcmp(s1,s2)!=0?true:false;
}

int main()
{
	string s1="cheng";
	Str s2="ning";
	cout<<s1<<"  "<<s2<<endl;
	Str s(s1.begin(),s1.end());
	cout<<s<<endl;

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色哟哟| 欧美日韩精品福利| 亚欧色一区w666天堂| 精品乱码亚洲一区二区不卡| 久久99久久久久久久久久久| 国产亚洲精品7777| 在线精品视频一区二区| 国产高清成人在线| 亚洲高清免费视频| 亚洲欧洲日韩女同| 欧美日韩国产免费| 成人av资源站| 精品一区二区三区不卡| 亚洲女女做受ⅹxx高潮| 精品理论电影在线| 日本电影欧美片| 亚洲午夜精品久久久久久久久| 欧美不卡视频一区| 成人美女视频在线看| 美女尤物国产一区| 亚洲综合免费观看高清完整版 | ...xxx性欧美| 精品国产乱码久久久久久牛牛 | 欧美人牲a欧美精品| 成人晚上爱看视频| 激情欧美一区二区| 日韩国产精品大片| 欧美日韩一级黄| 国产一区二区三区四区在线观看| 91国内精品野花午夜精品| 国产精品亚洲第一| 欧美a级理论片| 午夜av区久久| 一个色妞综合视频在线观看| 国产精品成人一区二区三区夜夜夜| 日韩欧美一级二级三级久久久| 91色九色蝌蚪| 96av麻豆蜜桃一区二区| 国产99久久久精品| 成人动漫视频在线| 粉嫩欧美一区二区三区高清影视 | 日韩av二区在线播放| 亚洲一级不卡视频| 亚洲激情图片一区| 中文字幕欧美国产| 日本一区二区三级电影在线观看| 日韩免费观看2025年上映的电影| 欧美丰满一区二区免费视频| 91精品国产综合久久福利| 欧美丝袜第三区| 欧美一区二区在线不卡| 91精品国产91久久久久久一区二区| 91.成人天堂一区| 91精品久久久久久久91蜜桃| 一本久久精品一区二区| 欧美丝袜丝交足nylons| 欧美另类z0zxhd电影| 在线播放中文一区| 制服丝袜av成人在线看| 精品久久久久av影院| 久久你懂得1024| 国产欧美一区二区精品性色超碰| 精品国产伦理网| 国产日韩欧美a| 亚洲欧美国产高清| 亚洲一区av在线| 裸体健美xxxx欧美裸体表演| 美女任你摸久久| 激情欧美一区二区| av激情成人网| 欧美伦理电影网| 精品日韩一区二区三区免费视频| 国产精品理伦片| 亚洲一区二区黄色| 国产精品12区| 一本到三区不卡视频| 91精品久久久久久久99蜜桃| 精品久久久久久无| 一区二区三区精密机械公司| 五月婷婷久久综合| 午夜精品久久久久久不卡8050| 免费高清在线一区| 久久99这里只有精品| 成人久久视频在线观看| 99久久免费精品| 欧美老女人在线| 久久久亚洲欧洲日产国码αv| 亚洲三级在线免费观看| 亚洲三级在线免费| 久久国产三级精品| 在线亚洲精品福利网址导航| 日韩欧美中文一区| 亚洲欧洲国产日本综合| 日本欧美一区二区三区乱码| 精品制服美女丁香| 欧美网站一区二区| 久久久综合视频| 婷婷成人激情在线网| 国产高清精品在线| 在线播放日韩导航| 国产精品九色蝌蚪自拍| 毛片一区二区三区| 91女神在线视频| 久久老女人爱爱| 亚洲第一av色| 色综合天天天天做夜夜夜夜做| 日韩一区二区三区电影在线观看| 中文字幕一区二区三区四区| 午夜国产精品一区| 成人av高清在线| 欧美午夜精品久久久久久超碰 | 久久夜色精品一区| 亚洲天堂精品视频| 国产在线精品一区二区三区不卡| youjizz久久| 国产欧美视频一区二区| 日本aⅴ免费视频一区二区三区| 色偷偷一区二区三区| 久久久国际精品| 国内精品久久久久影院一蜜桃| 91国偷自产一区二区三区成为亚洲经典 | 国产无一区二区| 蜜桃视频一区二区三区在线观看| 欧美日韩大陆一区二区| 亚洲色图丝袜美腿| 91在线视频观看| 久久毛片高清国产| 国产一区啦啦啦在线观看| 91精品国产综合久久久蜜臀粉嫩 | 欧美福利电影网| 亚洲国产欧美另类丝袜| 91免费在线播放| 久久久久九九视频| 国产91富婆露脸刺激对白| 欧美视频一区二区三区四区| 亚洲一区在线看| 色狠狠桃花综合| 亚洲最大色网站| 91毛片在线观看| 亚洲一区二区在线免费观看视频| 不卡一区在线观看| 中文字幕欧美一区| 成人免费毛片aaaaa**| 久久五月婷婷丁香社区| 三级不卡在线观看| 欧美日韩国产123区| 一区二区高清视频在线观看| 欧美揉bbbbb揉bbbbb| 一区二区久久久久久| 欧美日韩一区二区三区四区 | 精品88久久久久88久久久| 久久99精品久久久久久| 一区二区三区视频在线看| 91福利小视频| 亚洲国产精品自拍| 日韩一二三四区| 毛片av一区二区三区| 国产喷白浆一区二区三区| 成人激情小说网站| 1024精品合集| 在线观看av不卡| 日产欧产美韩系列久久99| 精品国产一区二区亚洲人成毛片| 国内精品久久久久影院一蜜桃| 国产精品久久久久永久免费观看| 99久久久久久99| 午夜国产不卡在线观看视频| 日韩视频一区二区三区| 国产河南妇女毛片精品久久久| 中文一区二区完整视频在线观看| 色天天综合色天天久久| 亚洲成人免费av| 精品福利一区二区三区| 成人免费观看av| 五月综合激情网| 久久蜜桃香蕉精品一区二区三区| 91丨porny丨国产入口| 一区二区在线电影| 欧美不卡在线视频| 国产麻豆精品theporn| 一区二区激情小说| 精品福利一区二区三区| 91成人免费电影| 久久激情五月婷婷| 亚洲一区二区免费视频| 日韩精品影音先锋| 一本大道av一区二区在线播放| 午夜精品一区二区三区电影天堂| 国产偷国产偷精品高清尤物| 在线免费观看成人短视频| 久久aⅴ国产欧美74aaa| 亚洲人成精品久久久久| 亚洲精品一区二区三区福利| 99视频精品在线| 国产乱码精品一区二区三区忘忧草 | 在线精品视频一区二区三四| 久久99精品久久久久久国产越南 | 日韩一级完整毛片| 丰满少妇久久久久久久| 精品一区二区在线看|