C++Primer第五版 练习12.2
来源:互联网 发布:ios手游网络加速器 编辑:程序博客网 时间:2024/05/21 11:23
练习12.2:编写你自己的StrBlob类,包含const版本的front和back。
/**2015/10/28*练习12.2 *问题描述:练习12.2:编写你自己的StrBlob类,包含const版本的front和back*作者:Nick Feng *邮箱:nickgreen23@163.com */#include <iostream>#include <string>#include <vector>#include <memory>using namespace std;class StrBlob{public: typedef std::vector<std::string>::size_type size_type; StrBlob(); StrBlob(std::initializer_list<std::string> il); size_type size() const { return data->size();} bool empty() const { return data->empty();} void push_back(const std::string &t) { data->push_back(t);} void pop_back(); const std::string& front(); const std::string& back();private: std::shared_ptr<std::vector<std::string>> data; void check(size_type i, const std::string &msg) const;};StrBlob::StrBlob() : data(make_shared<vector<string>>()) { }StrBlob::StrBlob(initializer_list<string> il) : data(make_shared<vector<string>>(il)){ }void StrBlob::check(size_type i, const string &msg) const{ if(i >= data->size()) throw out_of_range(msg);}const string& StrBlob::front(){ check(0,"front on empty StrBlob"); return data->front();}const string& StrBlob::back(){ check(0,"back on empty StrBlob"); return data->back(); }void StrBlob::pop_back(){ check(0,"pop_back on empty StrBlob"); data->pop_back();}int main(){ StrBlob b1; StrBlob b2 = {"a","an","the"}; b1 = b2; b2.push_back("about"); cout << b1.size() << endl; cout << b2.size() << endl; return 0; }
0 0
- C++Primer第五版 练习12.2
- C++Primer第五版 12.2.1节练习
- C++Primer第五版 12.2.2节练习
- C Primer Plus 第五版 课后练习
- C++Primer 第五版 练习9.43 解答
- C++Primer 第五版 练习10.12解答
- C++Primer第五版 练习10.32解答
- C++Primer 第五版 1.1节练习
- C++Primer第五版 1.3节练习
- C++Primer第五版 1.6节练习
- C++Primer第五版 2.4节练习
- C++Primer第五版 3.1节练习
- C++Primer第五版 4.2节练习
- C++Primer第五版 4.3节练习
- C++Primer第五版 4.4节练习
- C++Primer第五版 4.6节练习
- C++Primer第五版 4.7节练习
- C++Primer第五版 4.8节练习
- pat 1082 Read Number in Chinese
- 查看IOS沙盒中文件的属性(修改日期,创建日期,大小等)
- 排序算法之直接插入排序
- 在知乎上看到的东西啦。fractional cascading
- Tiny C Compiler参考手册
- C++Primer第五版 练习12.2
- 学习Qt(10)
- hadoop使用第三方jar包
- Java设计模式----策略模式(Strategy)
- cppcheck下载及使用
- freemaker在springmvc详解2
- 【BZOJ3155】Preprefix sum
- iOS——自己实现流式布局
- 有关Material Design新特性的详解。