我試圖找出如何使用升壓:: circular_buffer下面的構造:C++使用分配器和初始化用升壓循環緩衝區
circular_buffer(capacity_type buffer_capacity, size_type n, const_reference item, const allocator_type& alloc = allocator_type());
我有一個自定義類:
template<class T> class Custom
{
public:
Custom() :
time(0.0)
{}
double time;
T data_;
};
與我的循環緩衝區定義使用構造函數只在一個容量:
boost::circular_buffer<Custom<T>> buffer(10);
我還沒有與分配器很多的工作,我想我的初始化使用默認/空/零點在構造值緩衝,它似乎是上面提到的構造函數是使用boost :: circular_buffer去了解它的方式,但我不完全知道如何用boost構造函數。如果是一個普通的矢量我以爲我可以做到以下幾點:
int num_elements = 10;
Custom<T> custom;
std::vector<Custom<T>> buffer(10, custom);
我真的無法找到任何的例子明確,所以任何幫助或指導表示讚賞。
確定這是偉大的。問題:現在當我推回來時,它將在最後開始填充,因爲所有項目都已填充,並且我的大小將返回num_elements。有沒有辦法解決?基本上我想要默認值,所以無論何時我訪問尚未填充但仍在容量範圍內的buffer [index],它都不會出錯。但我有點想要空的緩衝區的行爲,其中大小隻返回我特意推回的項目,當我明確推回時它將從頭開始(忽略默認值)。不確定這是否可能,可能必須重載一些操作符/方法? –
@arias_JC就像一個矢量它是一個或另一個。你可以默認填充它,並用'operator []'覆蓋它,或者你設置它的容量,並用'push_back()'填充它。你可以在你自己的類中包裝緩衝區,並提供你想要的功能,如果你真的必須擁有它。 – NathanOliver