C++ - The Complete Reference中,作者在展示了如何实现自定义C++字符串类后给了我们一个挑战。摘录:



我在这里了解基本概念,但是在实现它时遇到了麻烦。我应该为每个字符或类似内容执行std::vector < char >push_back吗?字符串操作呢?需要一些帮助。示例代码将被感激地接受,或者您可以解释我如何能够实现这一点。

最佳答案

是的,std::vector<char>听起来是个好主意。这样可以避免编写自定义析构函数,复制构造函数和复制赋值运算符的麻烦。加上所有迭代器成员函数(beginend和co。)都可以委托(delegate)给std::vector<char>版本。



当然,这是我将如何重载operator+=operator+作为字符串类型:

class StrType
{
    std::vector<char> vec;

public:

    // ...

    StrType& operator+=(const StrType& rhs)
    {
        vec.insert(vec.end(), rhs.vec.begin(), rhs.vec.end());
        return *this;
    }
};

StrType operator+(StrType lhs, const StrType& rhs)
{
    lhs += rhs;
    return lhs;
}

可能是operator+的更有效的版本,但是您可以自己弄清楚。

09-25 21:38