C++ A C++;用于组合容器和自定义逻辑的技术/库?

C++ A C++;用于组合容器和自定义逻辑的技术/库?,c++,boost,stl,policy-based-design,C++,Boost,Stl,Policy Based Design,我有时需要延迟处理对象。但是,保存对象的线程不能延迟 一个自然的解决方案是有一个单独的线程等待这样的对象。当对象可用时,第二个线程将根据需要延迟并处理该对象。第二个线程将在信号灯上休眠。当主线程有一个要延迟处理的对象时,它会将该对象放入队列并向信号量发送信号 虽然这会起作用,但存在另一个程序员(或我)可能忘记在对对象进行排队时向信号量发送信号的风险;我想强制执行 因此,我可以创建自己的容器,它基于一个标准容器,但是添加了一个回调(可能使用基于策略的设计)和一个内部信号量。它将强制在向容器中添加项

我有时需要延迟处理对象。但是,保存对象的线程不能延迟

一个自然的解决方案是有一个单独的线程等待这样的对象。当对象可用时,第二个线程将根据需要延迟并处理该对象。第二个线程将在信号灯上休眠。当主线程有一个要延迟处理的对象时,它会将该对象放入队列并向信号量发送信号

虽然这会起作用,但存在另一个程序员(或我)可能忘记在对对象进行排队时向信号量发送信号的风险;我想强制执行

因此,我可以创建自己的容器,它基于一个标准容器,但是添加了一个回调(可能使用基于策略的设计)和一个内部信号量。它将强制在向容器中添加项时运行回调函数


但这项功能似乎非常有用,也是人们普遍希望的,我敢打赌,有人已经写了这篇文章,可能比我在这里提出的设计更好,并且解决了诸如可重入性之类的棘手细节。有这方面的图书馆吗?或者,是否有一种众所周知的技术可以获得此功能?

我已经为此使用了私有继承,并使用了
声明:

struct myVec : private std::vector<int> {
 // Stuff that works the same
 using std::vector<int>::push_back;
 using std::vector<int>::erase;
 using std::vector<int>::iterator;

 // Stuff that works differently:
 void erase(std::vector<int>::iterator it) { ... }
};
struct myVec:private std::vector{
//工作原理相同的东西
使用std::vector::push_-back;
使用std::vector::erase;
使用std::vector::迭代器;
//工作方式不同的东西:
无效擦除(std::vector::iterator it){…}
};

重要的是不要使用来自标准容器的公共继承。您最终将编写与切片和非虚拟析构函数相关的bug。

如果您自己编写,请注意您不必从头开始编写。您可以编写一个只管理内部
std::vector
或其他内容的容器非常感谢。