实验测试1《C++ Primer》第五版——第十二章 动态内存
来源:互联网 发布:telnet udp 连接端口 编辑:程序博客网 时间:2024/06/04 19:19
#include <string>#include <vector>#include <iostream>#include <memory>#include <algorithm>using namespace std;class A {public: A(string s) : s(s) { } A(const A &a) = default; ~A() { cout << s << " ~A()" << endl; } const string get() const { return s; } void set(const string &s) { this->s = s; }private: string s;} ;void da(A *a) { cout << a->get() << " d()" << endl; delete a;}void test_sp_up_wp() { auto sp = make_shared<A>("sp1"); sp.reset(new A("sp2")); sp.reset(new A("sp3"), da); cout << "sp.unique " << sp.unique() << endl; cout << "sp.use_count " << sp.use_count() << endl; { auto sp_2 = sp; cout << "sp_2.use_count " << sp_2.use_count() << endl; sp_2->set("sp_2"); } weak_ptr<A> w(sp); auto w2 = w; cout << "sp.use_count " << sp.use_count() << endl; if (auto r = w2.lock()) cout << r->get() << endl; unique_ptr < A, decltype(da)*> uq1(new A("uq1"), da); uq1 = nullptr; A a("A_object"); unique_ptr<A> uq2(&a); cout << uq2.release()->get() << endl;}void test_allocator() { vector<A> v = {A("1"), A("2"), A("3"), A("4")}; allocator<A> a; A * const p = a.allocate(16 + 1); a.construct(p, "start"); auto start = p + 1; uninitialized_copy(v.cbegin(), v.cend(), start); uninitialized_copy_n(v.cbegin(), v.size(), start + v.size()); uninitialized_fill(start + 2 * v.size(), start + 3 * v.size(), "1234"); uninitialized_fill_n(start + 3 * v.size(), v.size(), "1234"); for_each(p, p + 16 + 1, [](const A & a) { static int i = 0; cout << i++ << ":" << a.get() << endl; }); a.destroy(p); a.deallocate(p, 16 + 1);}int main(int argc, char** argv) { cout << "=======================test_sp_up_wp=====================" << endl; test_sp_up_wp(); cout << "=========================================================" << endl; cout << "=======================test_allocator=====================" << endl; test_allocator(); cout << "=========================================================" << endl; return 0;}
输出结果
=======================test_sp_up_wp=====================sp1 ~A()sp2 ~A()sp.unique 1sp.use_count 1sp_2.use_count 2sp.use_count 1sp_2uq1 d()uq1 ~A()A_objectA_object ~A()sp_2 d()sp_2 ~A()================================================================================test_allocator=====================4 ~A()3 ~A()2 ~A()1 ~A()0:start1:12:23:34:45:16:27:38:49:123410:123411:123412:123413:123414:123415:123416:1234start ~A()1 ~A()2 ~A()3 ~A()4 ~A()=========================================================
阅读全文
0 0
- 实验测试1《C++ Primer》第五版——第十二章 动态内存
- 读书笔记《C++ Primer》第五版——第十二章 动态内存
- 《c++ primer》第五版 第十二章 动态内存
- 《C++primer(第五版)》学习之路-第十二章:动态内存
- c++primer(第五版) 第十二章 动态内存习题答案
- c++ primer(第五版)笔记 第十二章 动态内存(1)
- c++primer第五版第十二章练习
- C++primer第五版笔记-第十二章动态内存
- c++ primer(第五版)笔记 第十二章 动态内存(2)
- 实验测试1《C++ Primer》第五版——第八章 IO类
- 实验测试1《C++ Primer》第五版——第九章 顺序容器
- 实验测试1《C++ Primer》第五版——第十章 泛型算法
- 实验测试1《C++ Primer》第五版——第十一章 关联容器
- 实验测试1《C++ Primer》第五版——第十三章 拷贝控制
- 实验测试1《C++ Primer》第五版——第十四章 重载运算与类型转换
- 实验测试1《C++ Primer》第五版——第十五章 面向对象程序设计
- 记录——《C Primer Plus (第五版)》第十章编程练习第十二题
- 记录——《C Primer Plus (第五版)》第十二章编程练习第1-8题
- 肖仰华 | 知识图谱研究的回顾与展望
- 收割屌丝玩法 强势的思维方式
- Java核心思想---------------一切皆对象
- 研究生手册(一)---论文篇
- Java中instanceof运算符用法详解
- 实验测试1《C++ Primer》第五版——第十二章 动态内存
- Java学习重难点
- 解决Oracle占用Http 8080端口的问题?
- Linux学习之CentOS(一)----在VMware虚拟机中安装CentOS 7
- 【通俗讲解】BP神经网络
- Python爬虫学习(四)正则表达式
- Java基础 —— HashSet 与 TreeSet
- 【02-Redis命令大全】
- Memo 关于mongodb fetch pug 插值小结