C++的容器類的實現是否支持與ObservableCollection for C#類似的方式的通知?C++的可觀察容器
5
A
回答
5
沒有像你描述的標準類,但Boost.Signals是一個相當強大的通知庫。當它改變了我將創建爲發出信號的物體的包裝,沿着這個線路:
#include <boost/signals.hpp>
#include <vector>
#include <iostream>
// Wrapper to allow notification when an object is modified.
template <typename Type>
class Observable
{
public:
// Instantiate one of these to allow modification.
// The observers will be notified when this is destroyed after the modification.
class Transaction
{
public:
explicit Transaction(Observable& parent) :
object(parent.object), parent(parent) {}
~Transaction() {parent.changed();}
Type& object;
private:
Transaction(const Transaction&); // prevent copying
void operator=(const Transaction&); // prevent assignment
Observable& parent;
};
// Connect an observer to this object.
template <typename Slot>
void Connect(const Slot& slot) {changed.connect(slot);}
// Read-only access to the object.
const Type& Get() const {return object;}
private:
boost::signal<void()> changed;
Type object;
};
// Usage example
void callback() {std::cout << "Changed\n";}
int main()
{
typedef std::vector<int> Vector;
Observable<Vector> o;
o.Connect(callback);
{
Observable<Vector>::Transaction t(o);
t.object.push_back(1);
t.object.push_back(2);
} // callback called here
}
0
STL中沒有這種東西。這並不意味着有人沒有在開源庫中創建這樣的東西,但我不相信它是語言的一部分。
-1
您需要自行編寫並將其備份到您喜歡的容器中。
0
我做它的方式我有這樣的事情在我的收藏notify_updated
和wait_event
,我打電話notify_updated
更改後,然後在其他部分我正在等待事件。我的解決方案對於我正在解決的問題非常具體,因此更多的是C-ish。認爲它與Mike的樣本在概念上相似。
相關問題
- 1. 訂閱可觀察內容
- 2. 過濾器可觀察到的由可觀察到的
- 3. 觀察員可以觀察多個可觀察物嗎?
- 4. 觀察者python中的可觀察類
- 5. 觀察AngularJS的可觀察性
- 6. Java觀察者和可觀察的
- 7. 選擇器可觀察 - RxSwift
- 8. 基於可觀察性,從可觀察對象中選擇可觀察對象
- 9. knockoutjs - 可觀察到的可觀察值的對象的observableArray
- 10. 參考自定義容器的C++觀察者模式
- 11. 無限可觀察到的HashMap作爲可觀察的
- 12. 將可觀察對象的事件引發到容器
- 13. 是否有任何可觀察的Qt容器類?
- 14. Java - 觀察模式 - 觀察一個班級,但可以訪問另一個班級正在觀察的內容
- 15. 當觀察者的觀察者的壽命長於可觀察到的
- 16. KnockoutJS可觀察對象的可觀察對象
- 17. knockoutjs可觀察對象的可觀察數組綁定
- 18. RXAndroid:可觀察等待另一個可觀察的完成
- 19. 可觀察 - 將2個承諾轉換爲可觀察到的
- 20. 一個可觀察事件的多個可觀察事件
- 21. MobX - 將參數傳遞爲可觀察的可變觀察值?
- 22. 使可觀察陣列的所有項目可觀察
- 23. 通過鍵可觀察的過濾器
- 24. 過濾器可觀察到的ObservableCollection - WPF
- 25. 在熱可觀察
- 26. 可觀察混亂
- 27. 複合可觀察
- 28. 可觀察ZoneAvarePromise Angular2
- 29. RxJs可觀察vs
- 30. 使用可觀察