由于工作的原因,需要在线程安全的情况下对std::list<T>进行该list进行访问,因此就简单的封装了下,代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57template<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
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复