Да, std::vector<char>
звучит как отличная идея. Это избавит вас от проблем написания пользовательского деструктора, конструктора копирования и оператора назначения копирования. Кроме того, все функции-члены итератора (begin
, end
и другие) могут просто делегироваться версиям 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+
, но вы можете понять это самостоятельно.