对std::listT的封装
生活随笔
收集整理的這篇文章主要介紹了
对std::listT的封装
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于工作的原因,需要在線程安全的情況下對std::list<T>進行該list進行訪問,因此就簡單的封裝了下,代碼如下:
template<typename T> class List { public:List () {}~List () {}void PushBack(const T& value) {boost::mutex::scoped_lock lock(mutex_);element_list_.push_back(value);}T Front() {boost::mutex::scoped_lock lock(mutex_);return element_list_.front();}void PopFront() {boost::mutex::scoped_lock lock(mutex_);element_list_.pop_front();}bool Empty() {boost::mutex::scoped_lock lock(mutex_);return element_list_.empty();}void Resize(const size_t& size) {boost::mutex::scoped_lock lock(mutex_);element_list_.resize(size);}size_t Size() {boost::mutex::scoped_lock lock(mutex_);return element_list_.size();}private:boost::mutex mutex_;std::list<T> element_list_;private:List (const List &);List & operator=(const List &); };調用方式: List<string*> list_; auto item = list_.Pop(); list_.PopFront();// 刪除時的調用方式 while (list_.Size() > 0) {auto item = list_.Front();list_.PopFront();delete item;item = nullptr; }構造函數中對list_中PushBack(value)元素,析構函數中釋放元素占用的內存
總結
以上是生活随笔為你收集整理的对std::listT的封装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git提交代码至代码仓库详细步骤
- 下一篇: IPTV终端技术