当前位置: 首页 > news >正文

商业网站策划书模板范文asp 网站发布器

商业网站策划书模板范文,asp 网站发布器,均安网站建设,wordpress 文章卡片1. c 内存模型 栈存放局部变量,大小受限一般为2M,由编译器自动管理其内存堆存放new创建的对象,需要手动创建和释放内存全局/静态区 存放全局及静态变量,又分为两块 bss段存储未初始化的全局和静态变量数据段存储初始化后的全局和…

1. c++ 内存模型

存放局部变量,大小受限一般为2M,由编译器自动管理其内存
存放new创建的对象,需要手动创建和释放内存
全局/静态区

存放全局及静态变量,又分为两块

bss段存储未初始化的全局和静态变量
数据段存储初始化后的全局和静态变量
代码段存放代码和const常量,是只读的

2. STL介绍

STL包含六大组件:容器、算法、迭代器、仿函数、空间置配器、适配器

2.1 容器

关联性容器
有序关联容器底层基于红黑树 map、set、multimap、multiset
无序关联容器底层基于哈希表 unordered_map、unordered_set、unordered_multimap、unordered_set

序列式容器
vector底层动态数组,随机访问较快,插入删除较慢
forward_list底层单向链表,随机访问较慢,插入删除较快
list双向链表,适合频繁插入删除
array固定大小数组,访问较快
deque双端队列,随机访问快尾部插入删除快,中间插入删除慢

容器适配器

对 vector、deque 或 list 进行封装

stack底层是deque,先进后出
queue底层是deque,先进先出

2.2 算法

常用的有:sort、reserve、sum、find

2.3 迭代器

本质是一个模板类,通过重载了指针的一些操作符模拟了指针的一些功能,迭代器返回的是对象引用而不是对象的值

2.4 仿函数

是一种特殊的类或结构体,通过重载operator()操作符,使得类能够像函数一样被调用,可以和算法一起结合使用

// 定义一个仿函数类
class Add {
public:int operator()(int a, int b) {return a + b;}
};// 自定义比较仿函数(降序排序)
struct Compare {bool operator()(int a, int b) {return a > b;}
};int main() {Add add;  std::cout << add(3, 5) << std::endl;  // 输出 8std::vector<int> vec = {3, 1, 4, 1, 5, 9};std::sort(vec.begin(), vec.end(), Compare()); // 使用仿函数进行排序for (int num : vec) {std::cout << num << " ";}return 0;
}

相比匿名函数,仿函数可以有更复杂的逻辑封装,有成员变量可以保持数据状态。

2.5 空间配置器

通常容器的空间配置器使用std::allocator 进行内存管理,当然也可以自定义allocator。vecor、list、map默认使用allocator作为内存分配工具。

操作std::allocator自定义 Allocator
内存分配allocate(n)通过 ::operator new
构造对象construct(p, args...)new (p) T(args...)
销毁对象destroy(p)调用 p->~T()
释放内存deallocate(p, n)通过 ::operator delete
适用场景STL 容器默认使用适用于特定性能优化

由于频繁创建和销毁对象会消耗大量资源,降低程序性能,产生内存碎片,而内存池解决了这一问题;预先分配一块内存,使用时从内存池中取出,不需要时放回内存池,省去创建和销毁的开销,提供程序效率,减少内存锁片。

自定义内存池可以使用自定义链表结构体、或基于allocator,allocator的每个内存大小相同,总内存块固定。

3. 多线程

线程是任务调度的基本单位,进程是操作系统分配内存的基本单位 ;一个进程可以包含多个线程;同一个进程下的线程共享同一个内存空间,不同进程间内存不共享

3.1 线程定义

#include <iostream>
#include <thread>void hello() {std::cout << "Hello from thread!" << std::endl;
}int main() {std::thread t(hello);  // 创建线程t.join();  // 等待线程执行完毕return 0;
}

t.join():阻塞主线程,等待 t 执行完成,

如果不想等待线程执行完毕,可以使用 detach() 让线程独立运行,detach之后就能够被join 

3.2 线程同步

  • c++11 互斥锁 std::mutex

最常用的锁,保证线程安全,std::lock_guard<std::mutex> lock(mtx); 使用lock_guard管理锁

  • 条件变量 std::condition_variable

常用在生产者消费者场景,与互斥锁联合使用,需要进行循环检查避免虚假唤醒

  • 原子操作std::atomic

是一种无锁操作,适用于简单数据保护,如计数器

  • c++17 读写锁 std::shared_mutex

用于读多写少的场景,允许多线程共享读锁,独占写锁

  • c++20信号量std::counting_semaphore

用于控制访问资源的线程数量

  • c++20 std::barrier 

多线程分阶段同步,等待所有线程到达同一起点后执行。

持续更新中、、、 

http://www.dtcms.com/a/610077.html

相关文章:

  • STM32WB55官方OTA例程
  • [Column] How Databricks Implemented Intelligent K8s Load Balancing
  • 网站建设好多钱菏泽郓城网站建设
  • 做互联网营销一般上什么网站cms系统都有哪些
  • 【算法】回溯算法精讲:从深度优先搜索到剪枝优化​
  • C语言知识体系梳理-第一篇
  • 克隆网站怎么做长沙网站建设公司名单
  • 【ASP.NET进阶】Controller 层基础:从 MVC 5 到 Core,继承的奥秘与避坑指南
  • PyTorch深度学习进阶(四)(数据增广)
  • 股指期货豁免开通条件是什么?
  • 上传模型/数据集到huggingface的三种方法
  • 33_FastMCP 2.x 中文文档之FastMCP客户端核心业务:提示模板详解
  • wordpress插件访客亚马逊seo推广
  • Juc篇-线程安全问题引入(从i++问题的底层出发)
  • Arbess V2.1.7版本发布,新增任务AliYun OSS上传、下载功能,新增流水线评审功能
  • 算法基础篇:(八)贪心算法之简单贪心:从直觉到逻辑的实战指南
  • 昊源建设监理有限公司网站外贸网站代码
  • 大专生就业:学历限制的现实考量与能力突围路径
  • Node.js 与 Docker 深度整合:轻松部署与管理 Node.js 应用
  • 中国企业500强榜单2021廊坊seo排名优化
  • 基于高光谱成像和偏最小二乘法(PLS)的苹果糖度检测MATLAB实现
  • 随访系统如何支持临床研究和数据分析?
  • idea 刷新maven,提示java.lang.RuntimeException: java.lang.OutOfMemoryError
  • 邢台本地网站vue做的pc线上网站
  • Arang Briket木炭块检测与识别:基于Mask R-CNN的精确识别方案详解
  • 怎么在百度建设一个网站工业设计大学排名前50
  • 【C++:封装红黑树】C++红黑树封装实战:从零实现MyMap与MySet
  • 构建AI智能体:九十四、Hugging Face 与 Transformers 完全指南:解锁现代 NLP 的强大力量
  • 保定网站排名哪家公司好有没一些网站只做临床药学
  • 目前做网站流行的语言网站策划书市场分析2000字