C++ Primer 第五版 中文版 练习 13.26
题目: 对上一题中描述的StrBlob类,编写你自己的版本。
StrBlob.h
#pragma once
#include <memory>
#include <vector>
#include <string>
#include "StrBlobPtr.h"
class StrBlob
{
public:
friend class StrBlobPtr;
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);
//拷贝构造函数
StrBlob(const StrBlob&);
//拷贝赋值运算符
StrBlob& operator=(const StrBlob&);
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();
StrBlobPtr begin() { return StrBlobPtr(*this); }
StrBlobPtr end()
{
auto ret = S