gpt4 book ai didi

c++ - 如何使用 STL 实现自定义字符串类?

转载 作者:行者123 更新时间:2023-11-30 04:33:03 24 4
gpt4 key购买 nike

C++ - The Complete Reference ,作者在展示了他如何实现自定义 C++ 字符串类后向我们提出了挑战。摘自本书:

A Challenge: Try implementing StrType (the string class) using the STL. That is, use a container to store the characters that comprise a string. Use iterators to operate on the strings, and use the algorithms to perform the various string manipulations.

我了解此处的基本概念,但在实现时遇到问题。我应该怎么做 std::vector < char >push_back对于每个字符或类似的东西?字符串操作呢?需要一些帮助。我们将不胜感激地接受示例代码,或者您可以解释我如何能够实现这一点。

最佳答案

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

can u give some code on how to do string manipulations? e.g concatenation ?

没问题,下面是我如何重载 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+ 版本,但您可以自己解决这个问题。

关于c++ - 如何使用 STL 实现自定义字符串类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7214435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com