概述
由于工作的原因,需要在线程安全的情况下对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::list
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复