C++ Primer 第5版--练习12.2
来源:互联网 发布:淘宝卖家存在仓库里的 编辑:程序博客网 时间:2024/06/07 02:49
练习 12.2:编写你自己的StrBlob类,包含const版本的front和back。
#include <iostream>#include <vector>#include <memory>#include <stdexcept>using namespace std;class StrBlob{public: typedef vector<string>::size_type size_type; StrBlob(); StrBlob(initializer_list<string> i1); 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() const; string& back() const;private: shared_ptr<vector<string>> data; void check(size_type i, const string &msg) const;};StrBlob::StrBlob() : data(make_shared<vector<string>>()) {}StrBlob::StrBlob(initializer_list<string> i1) : data(make_shared<vector<string>>(i1)) {}void StrBlob::check(size_type i, const string &msg) const{ if (i >= data->size()) throw out_of_range(msg);}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::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 << "Elements number of b1: " << b1.size() << endl << "Elements number of b2: " << b2.size(); return 0;}
阅读全文
0 0
- C++ Primer 第5版--练习12.2
- C++primer第5版课后练习习题答案 9.4
- C++primer第5版课后练习习题答案9.5
- C++primer第5版课后练习习题答案9.16
- C++primer第5版课后练习习题答案 9.20
- C++primer第5版课后练习习题答案9.26
- C++primer第5版课后练习习题答案9.28
- C++primer第5版课后练习习题答案9.47
- C++primer第5版课后练习习题答案9.51
- C++primer第5版课后练习习题答案9.52
- C++primer第5版课后练习习题答案7.23
- 《C Primer Plus(第5版)中文版》第7章编程练习第5题
- 《C Primer Plus(第5版)中文版》第6章编程练习第1题
- 《C Primer Plus(第5版)中文版》第6章编程练习第14题
- 《C Primer Plus(第5版)中文版》第6章编程练习第15题
- 《C Primer Plus(第5版)中文版》第6章编程练习第16题
- 《C Primer Plus(第5版)中文版》第7章编程练习第1题
- 《C Primer Plus(第5版)中文版》第7章编程练习第2题
- Particle Filter 粒子滤波 原理以及python实践二
- java实现单链表
- am335x nand驱动移植
- 你知道吗?为何C语言函数调用要堆栈,而汇编却不需要?
- Tomcat的一些使用方法
- C++ Primer 第5版--练习12.2
- TCP与UDP简单区别
- boost智能指针
- mjpg_streamer源码对针对图像处理算法的修改[转载]
- Tensorflow实现AGN自编码器
- 开发环境介绍
- LeetCode-40. Combination Sum II
- Android(6)SQLite及adb的简单使用
- 【JavaSE系列-入门篇5】——常见问题以及解决方案