提交 d31d3df7 编写于 作者: 邹晓航

add ref

上级 3c6fa24a
#ifndef _REF_H_
#define _REF_H_
#include <atomic>
namespace TinySTL{
namespace Detail{
template<class T>
struct ref_t{
std::atomic<size_t> ncount_;
T *data_;
explicit ref_t(size_t n = 0, T *p = nullptr) :ncount_(n), data_(p){}
ref_t(const ref_t&) = default;
ref_t& operator = (const ref_t&) = default;
size_t count()const{ return ncount_.load(); }
T *get_data()const{ return data_; }
ref_t& operator ++(){
++ncount_;
return *this;
}
ref_t operator ++(int){
auto t = *this;
++*this;
return t;
}
ref_t& operator --(){
--ncount_;
return *this;
}
ref_t operator --(int){
auto t = *this;
--*this;
return t;
}
};
}
}
#endif
\ No newline at end of file
......@@ -121,6 +121,7 @@
<ClInclude Include="Detail\Deque.impl.h" />
<ClInclude Include="Detail\Graph.impl.h" />
<ClInclude Include="Detail\List.impl.h" />
<ClInclude Include="Detail\Ref.h" />
<ClInclude Include="Detail\Unordered_set.impl.h" />
<ClInclude Include="Detail\Vector.impl.h" />
<ClInclude Include="Functional.h" />
......
......@@ -263,6 +263,9 @@
<ClInclude Include="Test\UniquePtrTest.h">
<Filter>Test</Filter>
</ClInclude>
<ClInclude Include="Detail\Ref.h">
<Filter>Detail</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.md" />
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册