C++ primer 第五版 中文版 练习 12.2 个人code
来源:互联网 发布:node.js python 编辑:程序博客网 时间:2024/05/18 03:20
C++ primer 第五版 中文版 练习 12.2
题目:编写你自己的StrBlob类,包含const 版本的 front 和 back 。
答:
StrBlob.h //定义类,声明相关函数
#include <memory>#include <vector>#include <string>class StrBlob{public:typedef std::vector<std::string>::size_type size_type;// 下面这个等同于上面这个。//using size_type = std::vector<std::string>::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();//元素访问std::string& front();std::string& back();//用const 重载 元素访问。const std::string& front() const;const std::string& back() const;private:std::shared_ptr<std::vector<std::string>> data;//如果data[i]不合法,抛出一个异常。void check(size_type i, const std::string &msg) const;};
#include "StrBlob.h"using namespace std;//定义构造函数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);}string& StrBlob::front(){check(0, "front on empty StrBlob");return data->front();}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();} const string& StrBlob::front() const{check(0, "front on empty StrBlob");return data->front();}const string& StrBlob::back() const {check(0, "back on empty StrBlob");return data->back();}
0 0
- C++ primer 第五版 中文版 练习 12.2 个人code
- C++ primer 第五版 中文版 练习 8.13 个人 code
- C++ primer 第五版 中文版 练习 9.5 个人 code
- C++ primer 第五版 中文版 练习 9.31 个人code
- C++ primer 第五版 中文版 练习 9.47 个人code
- C++ primer 第五版 中文版 练习 9.49 个人code
- C++ primer 第五版 中文版 练习 9.50 个人code
- C++ primer 第五版 中文版 练习 10.1 个人code
- C++ primer 第五版 中文版 练习 10.2 个人code
- C++ primer 第五版 中文版 练习 9.51 个人code
- C++ primer 第五版 中文版 练习 10.3 个人code
- C++ primer 第五版 中文版 练习 10.6 个人code
- C++ primer 第五版 中文版 练习 10.9 个人code
- C++ primer 第五版 中文版 练习 10.11 个人code
- C++ primer 第五版 中文版 练习 10.13 个人code
- C++ primer 第五版 中文版 练习 10.14 个人code
- C++ primer 第五版 中文版 练习 10.15 个人code
- C++ primer 第五版 中文版 练习 10.16 个人code
- hdu1686 KMP裸题
- Matlab数据类型的转换
- git tag
- 新人写博文总结今天所学 JSP里javaBean定义和getProperty、setProperty
- HDU-4961 Boring Sum STL模拟
- C++ primer 第五版 中文版 练习 12.2 个人code
- Jsoup解析html
- hdu 1022 Train Problem I
- pictureBox sizemode=zoom时图片像素坐标
- db2 merge into语法
- 黑马程序员-排序和反转
- STM32串口的设置和库函数的介绍
- HDU 1978 How many ways
- DataGrid筛选