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);
	}
}
相关推荐
jiaway4 分钟前
【C语言】第一课 环境配置
c语言·开发语言
Qiang_san25 分钟前
GNU Make | C/C++项目自动构建入门
c语言·c++·gnu
黑色的山岗在沉睡27 分钟前
LeetCode 189. 轮转数组
java·算法·leetcode
墨染点香28 分钟前
LeetCode 刷题【65. 有效数字】
算法·leetcode·职场和发展
小红帽2.01 小时前
从零构建一款开源在线客服系统:我的Go语言实战之旅
开发语言·golang·开源
slim~1 小时前
Java基础第9天总结(可变参数、Collections、斗地主)
java·开发语言
源代码•宸1 小时前
Leetcode—2749. 得到整数零需要执行的最少操作数【中等】(__builtin_popcountl)
c++·经验分享·算法·leetcode·位运算
用户4822137167751 小时前
深度学习——AlexNet网络结构
算法
芒果敲代码1 小时前
单一职责原则(SRP)
c++·单一职责原则