C++ //练习 12.2 编写你自己的StrBlob类,包含const版本的front和back。

C++ Primer(第5版) 练习 12.2

练习 12.2 编写你自己的StrBlob类,包含const版本的front和back。

环境:Linux Ubuntu(云服务器)
工具:vim
代码块
cpp 复制代码
class StrBlob{
public:
	typedef vector<string>::size_type size_type;
	StrBlob();
	StrBlob(initializer_list<string> il);
	size_type size() const { return data->size(); }
	bool empty() const { return data->empty(); }
	void push_back(const string &t) { data->push_back(t); }
	void pop_back();
	string &front();
	string &back();
	string &front() const;
	string &back() const;
private:
	shared_ptr<vector<string>> data;
	void check(size_type i, const string &msg) const;
};

void StrBlob::pop_back(){
	check(0, "pop_back on empty StrBlob");
	data->pop_back();
}

string& StrBlob::front(){
	check(0, "front on empty StrBlob");
	return data->front();
}

string& StrBlob::back(){
	check(0, "back on empty StrBlob");
	return data->back();
}

string& StrBlob::front() const{
	check(0, "front on empty StrBlob");
	return data->front();
}

string& StrBlob::back() const{
	check(0, "back on empty StrBlob");
	return data->back();
}

void StrBlob::check(size_type i, const string &msg) const{
	if(i >= data->size()){
		throw out_of_range(msg);
	}
}
相关推荐
CoovallyAIHub2 分钟前
工业视觉检测:多模态大模型的诱惑
深度学习·算法·计算机视觉
木头程序员4 分钟前
前端(包含HTML/JavaScript/DOM/BOM/jQuery)基础-暴力复习篇
开发语言·前端·javascript·ecmascript·es6·jquery·html5
Jayden_Ruan9 分钟前
C++分解质因数
数据结构·c++·算法
Data_agent15 分钟前
Cocbuy 模式淘宝 / 1688 代购系统(欧美市场)搭建指南
开发语言·python
lsx20240624 分钟前
《Foundation 下拉菜单》
开发语言
期待のcode27 分钟前
认识Java虚拟机
java·开发语言·jvm
微露清风31 分钟前
系统性学习C++-第二十讲-哈希表实现
c++·学习·散列表
raining_peidx31 分钟前
xxljob源码
java·开发语言
肥猪猪爸32 分钟前
双重检查锁(DCL)与 volatile 的关键作用
java·开发语言·单例模式
bubiyoushang88834 分钟前
MATLAB实现雷达恒虚警检测
数据结构·算法·matlab