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