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);
	}
}
相关推荐
再难也得平11 分钟前
[LeetCode刷题]1.两数之和(java题解)
java·算法·leetcode
皮卡蛋炒饭.17 分钟前
钻石收集者&是7倍数的最长子序列&Zuma
数据结构·算法·排序算法
plus4s17 分钟前
2月20日(88-90题)
算法
仰泳的熊猫19 分钟前
题目1529:蓝桥杯算法提高VIP-摆花
数据结构·c++·算法·蓝桥杯
yaoxin52112320 分钟前
327. Java Stream API - 实现 joining() 收集器:从简单到进阶
java·开发语言
陆嵩24 分钟前
CG 方法(共轭梯度)的数学推导及其算法
算法·cg·共轭梯度·lanczos·arnoldi·正交化·gram-schmidt
twilight_46925 分钟前
机器学习与模式识别——SVM
算法·机器学习·支持向量机
小糯米60132 分钟前
C++ 树
数据结构·c++·算法
liliangcsdn1 小时前
IMPALA强化学习算法的学习和解读
学习·算法
再难也得平1 小时前
[LeetCode刷题]283.移动零(通俗易懂的java题解)
java·算法·leetcode