<分区>
我需要实现需要将字符串作为元素保存的循环缓冲区。
我想出了一个下面的类原型(prototype)。但由于我是 C++ 的新手,我认为应该有更好的方法来实现同样的目的。
下面是类定义。
class circular_buffer {
public:
circular_buffer( int count ) : size( count ), index( 0 )
{
v.resize( size );
}
void add_element( const char* elem )
{
v[index] = elem;
index = ( index + 1) % size;
}
bool is_element_exist( const char * elem )
{
auto itr = find_if( v.begin(), v.end(), [elem](string &o) { return o == elem; } );
return ( itr != v.end() )
}
private:
int size;
int index;
std::vector<std::string> v;
};
有没有更好的解决方案?上述设计是否有改进的机会?
我在某处读到过关于 boost 循环缓冲区的内容,但这对我来说不是一个选项。
根据 Martin zhai 在他的评论和回答中的建议进行编辑。