哪种STL容器最适合我的需求?我基本上有一个10个元素宽的容器,在这个容器中我不断地push_back
新的元素,同时pop_front
最老的元素(大约一百万次)。
我目前正在使用std::deque
来完成这项任务,但我想知道std::list
是否会更有效率,因为我不需要重新分配自己(或者我可能把std::deque
误认为std::vector
了?)。或者有没有更高效的容器来满足我的需求?
附言:我不需要随机访问
发布于 2020-06-12 03:12:42
这个例子很简单,你可以自己写。这里有一些非常适用于使用STL占用太多空间的微控制器的情况。这是将数据和信号从中断处理程序传递到主循环的好方法。
// FIFO with circular buffer
#define fifo_size 4
class Fifo {
uint8_t buff[fifo_size];
int writePtr = 0;
int readPtr = 0;
public:
void put(uint8_t val) {
buff[writePtr%fifo_size] = val;
writePtr++;
}
uint8_t get() {
uint8_t val = NULL;
if(readPtr < writePtr) {
val = buff[readPtr%fifo_size];
readPtr++;
// reset pointers to avoid overflow
if(readPtr > fifo_size) {
writePtr = writePtr%fifo_size;
readPtr = readPtr%fifo_size;
}
}
return val;
}
int count() { return (writePtr - readPtr);}
};
https://stackoverflow.com/questions/1262808
复制相似问题