auto make_ptr_1 = std::make_shared<std::vector<std::string>>(str_v1); // 栈分配 // std::shared_ptr<std::vector<std::string>>make_ptr_1(&str_v1); returnmake_ptr_1; } intmain() { std::shared_ptr<std::vector<std::string>> make_ptr_2(AssignValue()); // 效果一样 //...
StrBlob 类中仅有一个 shared_ptr 成员,这个 shared_ptr 指向一个 string 的 vector。 #include<vector>#include<string>#include<initializer_list>#include<memory>#include<exception>usingstd::vector;usingstd::string;classStrBlob{public:usingsize_type = vector<string>::size_type;// 灵活使用类型别名StrBl...
string& front(){return data->front();} string& back(){return data->back();} private: shared_ptr<vector<string>> data; }; class un_shared_vector{ public: typedef vector<string>::size_type size_type; un_shared_vector():data(vector<string>()){} un_shared_vector(initializer_list<strin...
// shared_ptr-examples.cpp // The following examples assume these declarations: #include <algorithm> #include <iostream> #include <memory> #include <string> #include <vector> struct MediaAsset { virtual ~MediaAsset() = default; // make it polymorphic }; struct Song : public MediaAsset { ...
Shard_ptr:类似于vector,智能指针也是模板,所以在创建智能指针的时候,比如要置顶指向的类型。 shared_ptr<string>p1;//shared_ptr可以指向stringshared_ptr<list<int>>p2;//shared_ptr可以指向int的list 2.使用方法 最安全的分配使用动态内存的方法就是调用make_shared函数。
autop=make_shared<vector<string>>(); 1. 四、shared_ptr的拷贝、赋值与引用计数 引用计数:shared_ptr类所指向的对象都有一个引用计数 但对shared_ptr类进行拷贝时,计数器就会增加。例如:当用一个shared_ptr初始化另一个shared_ptr、或者它作为参数传递给一个函数以及作为函数的返回值,它所关联的计数器就会增加...
基类Polygon的成员_points是一个shared_ptr,指向动态分配的vector<Point>,这样实现了在Polygon对象的多个拷贝之间共享相同的vector<Point>。基于Polygon实现了Rect和Circle两个子类。 #include <vector> #include <string> #include <memory> #include <cassert> using namespace std; static constexpr double PI = ...
...2、boost::shared_ptr不需要手动的调用类似release***方法: 它不像侵入式实现的智能指针一样需要手动的调用类似release方法,全部用由shared_ptr内部的计数器自动增减...例如std::vector IntVec,使用shared_ptr方式为std::vectorshared_ptr > IntptrVec. 4、boost::shared_ptr...boost::shared_ptr ptr_obj...
深⼊学习C++智能指针之shared_ptr与右值引⽤的⽅法 ⽬录 1. 介绍 2. 初始化⽅法 2.1 通过构造函数初始化 2.2 通过拷贝和移动构造函数初始化 2.3 通过 std::make_shared 初始化 2.4 通过 reset ⽅法初始化 3. 获取原始指针 4. 指定删除器 5. 参考链接 1. 介绍 在 C++ 中没有垃圾回收...
// shared_ptr-examples.cpp// The following examples assume these declarations:#include<algorithm>#include<iostream>#include<memory>#include<string>#include<vector>structMediaAsset{virtual~MediaAsset() =default;// make it polymorphic};structSong:publicMediaAsset {std::wstring artist;std::wstring title...