我需要一个缓冲区类。我发现“std::vector”非常有用,但我不喜欢这样做:
typedef std::vector<char> Buffer;
Buffer buff1;
Buffer buff2;
...
buff1.insert(buff1.end(), buff2.begin(), buff2.end())
每次我想追加......我想要一些 concat 方法,比如:
buff1.append(buff2)
或 operator+= 或其他东西。
现在,我尝试添加此方法:
void append(dataStructures::Buffer& self, const dataStructures::Buffer& other)
{
self.insert(self.end(), other.begin(), other.end());
}
并简单地调用它:buff1.append(buff2)
但它不会编译,原因是:std::vector<byte, std::allocator<byte>>" has no member "append"
. 没错。我也尝试将“self”作为指针,但没有成功。将 operator<< 添加到 std::ostream 时它确实有效,所以我真的希望它可以工作,但我错了。
当然,我可以使用继承机制创建一个 Buffer,但是 std 容器没有虚拟 Dtor,所以这可能是个坏主意(尽管我没有添加任何成员变量……仍然是个坏主意)。
有什么办法可以做我想做的事吗?我知道这只是可读性的问题,但这对我来说很重要。我想知道是否有一个简单的解决方案,或者我唯一的选择是实现一个代理类或一个全新的 Buffer 类(我尝试使用 boost 的 Buffer,但它不分配内存,据我了解)。
非常感谢。