memory buffer

256 篇文章 3 订阅
149 篇文章 2 订阅
#include <iostream>
#include <vector>
#include <algorithm>
class MemoryBuffer {
public:
    explicit MemoryBuffer(size_t len) : buffer_(len, 0) {
    }
    virtual ~MemoryBuffer() = default;
    MemoryBuffer(const MemoryBuffer &) = default; 
    MemoryBuffer(MemoryBuffer &&) = default; 
    MemoryBuffer & operator = (const MemoryBuffer &) = default; 
    MemoryBuffer & operator = (MemoryBuffer &&) = default; 
public:
    bool write(const char *data, size_t length) {
        if (buffer_.size() >= max_capacity) {
            return false;
        }
        size_t len = offset_ + length;
        if (buffer_.size() < len) {
            buffer_.resize(len);
        }
        std::copy(data, data + length, begin(buffer_) + offset_);
        offset_ += length;
        return true;
    }
    inline std::vector<char> release()  {
        return std::move(buffer_);
    }
    inline void set_max_capacity(size_t cap) {
        max_capacity = cap;
    }
    inline size_t size() const {
        return buffer_.size();
    }
private:
    size_t offset_ = 0;
    size_t max_capacity = 1024 * 1024;
    std::vector<char>buffer_;
};
int main() {
    MemoryBuffer buffer(1024);
    MemoryBuffer buffer1(64);
    buffer.write("123", 3);
    buffer1 = buffer;
    std::cout << buffer1.size() << std::endl;
    auto vec = buffer.release();
    std::cout << vec.size() << std::endl;
    for (int i = 0;i < 3;i++) {
        std::cout << vec[i] << std::endl;
    }

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值