c++标准库
feng_ye2015
加油
展开
-
c++标准库(笔记):智能指针(1) -- shared_ptr
自c++11起,c++标准库提供了两大类型的智能指针 1、shared_ptr 2、unique_ptr 这两个类被定义在<memory>内 shared_ptr:当对象再也不被使用时就被清理创建shared_ptr: shared_ptr<string> pNico(new string("nico"));也可以使用make_shared: shared_ptr<...原创 2019-02-11 13:29:23 · 448 阅读 · 0 评论 -
c++标准库(笔记):智能指针(2) -- weak_ptr
shared_ptr主要是为了避免操心指针指向的资源,保证在最后一个对象结束生命的时候其相应资源也被释放,但有些情形并不期望这样或无法运作:1、环式指向:如果两对象使用shared_ptr互相指向对方,而一旦不存在外部引用指向他们时,这种情况下shared_ptr不会释放数据,因为每个对象的use_count()仍是1; #include <iostream> #include &...翻译 2019-02-13 16:35:34 · 238 阅读 · 0 评论 -
c++标准库(笔记):智能指针(3) -- shared_ptr使用中可能会出现的问题
问题: int* p = new int; shared_ptr<int> sp1(p); shared_ptr<int> sp2(p); //error 上述问题出在sp1和sp2都会在丢失p的拥有权时释放相应资源,也就是会析构两次。 基于此,必须保证对象只被一组shared_ptr拥有,应该总是在创建对象和相应资源时直接设立 smart pinter: shared_...翻译 2019-02-13 16:37:23 · 396 阅读 · 0 评论 -
c++标准库(笔记):std::pair
std::pair可以将两个value值组成一个单元,经常用于map、multimap、unordered_map、 unordered_multimap,以及函数需要返回一对值时使用。std::pair是一个struct而不是一个class,其所有成员均为public: namespece std{ template<typename T1, typename T2> s...原创 2019-01-17 16:22:35 · 2474 阅读 · 0 评论 -
c++标准库(笔记):std::tuple
tuple是TR1引入的,它扩展了pair的概念,可以拥有任意数量的元素。 tuple的构建与元素访问: tuple<int,float,string> t1(41,6.3,"niconiconi") auto t2 = make_tuple(22,44,"niconiconi"); get<0>(t1); get<1>(t1); 注1:tuple的元素类型...原创 2019-02-11 10:20:45 · 691 阅读 · 0 评论 -
c++标准库笔记:智能指针(4)-- unique_ptr
unique_ptr是一种在异常发生时可帮助避免资源泄露的智能指针。 一般而言,unique_ptr可确保一个对象和其相应资源同一时间只被一个pointer拥有。 unique_ptr是其所指对象的唯一拥有着,自然而然地,当unique_ptr被销毁,其所指向的对象也就自动销毁。unique_ptr的必要条件就是,它指向的对象只有一个拥有者。 使用unique_ptr有个好处就是在函数内部有显...翻译 2019-02-15 13:59:17 · 255 阅读 · 1 评论