【发布时间】:2014-01-18 12:04:14
【问题描述】:
我尝试获取某种仅包含最后 n 个元素的缓冲区。因此,如果新值到达,请忘记缓冲区中的最后一个值。到目前为止我所做的是:
vector<double> buf;
buf.assign(n,0);
while(1) {
memcpy(&buf[1],&buf[0],sizeof(double)*(n-1));
buf[0] = SomeNewDouble;
}
我不知道这是如何执行的。有没有更好的方法来做到这一点?
限制:
- 必须是向量
操作系统:Linux 使用 gcc/g++ (
【问题讨论】:
-
使用 memcpy,源和目标不应重叠。请改用 memmove。