积分充值
 首页
前端开发
AngularDartElectronFlutterHTML/CSSJavaScriptReactSvelteTypeScriptVue.js构建工具
后端开发
.NetC#C++C语言DenoffmpegGoIdrisJavaJuliaKotlinLeanMakefilenimNode.jsPascalPHPPythonRISC-VRubyRustSwiftUML其它语言区块链开发测试微服务敏捷开发架构设计汇编语言
数据库
Apache DorisApache HBaseCassandraClickHouseFirebirdGreenplumMongoDBMySQLPieCloudDBPostgreSQLRedisSQLSQLiteTiDBVitess数据库中间件数据库工具数据库设计
系统运维
AndroidDevOpshttpdJenkinsLinuxPrometheusTraefikZabbix存储网络与安全
云计算&大数据
Apache APISIXApache FlinkApache KarafApache KyuubiApache OzonedaprDockerHadoopHarborIstioKubernetesOpenShiftPandasrancherRocketMQServerlessService MeshVirtualBoxVMWare云原生CNCF机器学习边缘计算
综合其他
BlenderGIMPKiCadKritaWeblate产品与服务人工智能亿图数据可视化版本控制笔试面试
文库资料
前端
AngularAnt DesignBabelBootstrapChart.jsCSS3EchartsElectronHighchartsHTML/CSSHTML5JavaScriptJerryScriptJestReactSassTypeScriptVue前端工具小程序
后端
.NETApacheC/C++C#CMakeCrystalDartDenoDjangoDubboErlangFastifyFlaskGinGoGoFrameGuzzleIrisJavaJuliaLispLLVMLuaMatplotlibMicronautnimNode.jsPerlPHPPythonQtRPCRubyRustR语言ScalaShellVlangwasmYewZephirZig算法
移动端
AndroidAPP工具FlutterFramework7HarmonyHippyIoniciOSkotlinNativeObject-CPWAReactSwiftuni-appWeex
数据库
ApacheArangoDBCassandraClickHouseCouchDBCrateDBDB2DocumentDBDorisDragonflyDBEdgeDBetcdFirebirdGaussDBGraphGreenPlumHStreamDBHugeGraphimmudbIndexedDBInfluxDBIoTDBKey-ValueKitDBLevelDBM3DBMatrixOneMilvusMongoDBMySQLNavicatNebulaNewSQLNoSQLOceanBaseOpenTSDBOracleOrientDBPostgreSQLPrestoDBQuestDBRedisRocksDBSequoiaDBServerSkytableSQLSQLiteTiDBTiKVTimescaleDBYugabyteDB关系型数据库数据库数据库ORM数据库中间件数据库工具时序数据库
云计算&大数据
ActiveMQAerakiAgentAlluxioAntreaApacheApache APISIXAPISIXBFEBitBookKeeperChaosChoerodonCiliumCloudStackConsulDaprDataEaseDC/OSDockerDrillDruidElasticJobElasticSearchEnvoyErdaFlinkFluentGrafanaHadoopHarborHelmHudiInLongKafkaKnativeKongKubeCubeKubeEdgeKubeflowKubeOperatorKubernetesKubeSphereKubeVelaKumaKylinLibcloudLinkerdLonghornMeiliSearchMeshNacosNATSOKDOpenOpenEBSOpenKruiseOpenPitrixOpenSearchOpenStackOpenTracingOzonePaddlePaddlePolicyPulsarPyTorchRainbondRancherRediSearchScikit-learnServerlessShardingSphereShenYuSparkStormSupersetXuperChainZadig云原生CNCF人工智能区块链数据挖掘机器学习深度学习算法工程边缘计算
UI&美工&设计
BlenderKritaSketchUI设计
网络&系统&运维
AnsibleApacheAWKCeleryCephCI/CDCurveDevOpsGoCDHAProxyIstioJenkinsJumpServerLinuxMacNginxOpenRestyPrometheusServertraefikTrafficUnixWindowsZabbixZipkin安全防护系统内核网络运维监控
综合其它
文章资讯
 上传文档  发布文章  登录账户
IT文库
  • 综合
  • 文档
  • 文章

无数据

分类

全部后端开发(18)C++(18)

语言

全部中文(简体)(18)

格式

全部PDF文档 PDF(10)PPT文档 PPT(8)
 
本次搜索耗时 0.098 秒,为您找到相关结果约 18 个.
  • 全部
  • 后端开发
  • C++
  • 全部
  • 中文(简体)
  • 全部
  • PDF文档 PDF
  • PPT文档 PPT
  • 默认排序
  • 最新排序
  • 页数排序
  • 大小排序
  • 全部时间
  • 最近一天
  • 最近一周
  • 最近一个月
  • 最近三个月
  • 最近半年
  • 最近一年
  • pdf文档 《深入浅出MFC》2/e

    面那么做就行。 为了支持这种能力,C++ 提供了所谓的虚拟函数(virtual function)。 虚拟+ 函数?! 听起来很恐怖的样子。如果你了解汽车的离合器踩下去代表汽车空档, 空档表示失去引擎本身的牵制力,你就会了解「高速行驶间煞车绝不能踩离合器」的道 理并矢志遵行。好,如果你真的了解为什么需要虚拟函数以及什么情况下需要它,你就 能够掌握它的灵魂与内涵,真正了解它的设计原理,并且发现认为它非常人性。并且, AfxWndProc(0, WM_COMMAND, 0, 0, pMyView); 不管这个规则是怎么定下来的,现在我要设计一个推动引擎,把它仿真出来。以下这些 函数名称以及函数内容,完全仿真MFC 内部。有些函数似乎赘余,那是因为我删掉了 许多主题以外的动作。不把看似赘余的函数拿掉或合并,是为了留下MFC 的足迹。此 外,为了追踪调用过程(call stack),我在各函数的第一行输出一串识别文字。 首先我把新增加的一些成员函数做个列表: 首先我把新增加的一些成员函数做个列表: 类别 与消息绕行有关的成员函数 全域函数AfxWndProc 就是我所谓的推动引擎的起始点。它本来应该是在 CWinThread::Run 中被调用,但为了实验目的,我在main 中调用它,每调用一次便推 送一个消息。这个函数在MFC 中有四个参数,为了方便,我加上第五个,用以表示是 谁获得消息(成为绕行的起点)。例如: 表示pMyFrame
    0 码力 | 1009 页 | 11.08 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.0.0b2 C++版

    有「划分」和「合并」两个阶段: 1. 划分阶段:通过递归不断 将数组从中点位置划分开,将长数组的排序问题转化为短数组的排序问题; 2. 合并阶段:划分到子数组长度为 1 时,开始向上合并,不断将 左、右两个短排序数组 合并为 一个长排 序数组,直至合并至原数组时完成排序; 11. 排序算法 hello‑algo.com 175 Figure 11‑8. 归并排序的划分与合并阶段 11.5 1, right] ); 2. 递归执行 1. 步骤,直至子数组区间长度为 1 时,终止递归划分; 「回溯合并」从底至顶地将左子数组和右子数组合并为一个 有序数组; 需要注意,由于从长度为 1 的子数组开始合并,所以 每个子数组都是有序的。因此,合并任务本质是要 将两 个有序子数组合并为一个有序数组。 11. 排序算法 hello‑algo.com 176 Figure 11‑9. 归并排序步骤 后序遍历:先递归左子树、再递归右子树、最后处理根结点。 11. 排序算法 hello‑algo.com 177 ‧ 归并排序:先递归左子树、再递归右子树、最后处理合并。 // === File: merge_sort.cpp === /* 合并左子数组和右子数组 */ // 左子数组区间 [left, mid] // 右子数组区间 [mid + 1, right] void merge(vector&
    0 码力 | 197 页 | 15.72 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.0.0b1 C++版

    Sort」是算法中“分治思想”的典型体现,其有「划分」和「合并」两个阶段: 1. 划分阶段:通过递归不断 将数组从中点位置划分开,将长数组的排序问题转化为短数组的排序问题; 2. 合并阶段:划分到子数组长度为 1 时,开始向上合并,不断将 左、右两个短排序数组 合并为 一个长排 序数组,直至合并至原数组时完成排序; Figure 11‑8. 归并排序的划分与合并阶段 11.5.1. 算法流程 「递归划分」从顶至底递归地 递归执行 1. 步骤,直至子数组区间长度为 1 时,终止递归划分; 「回溯合并」从底至顶地将左子数组和右子数组合并为一个 有序数组; 11. 排序算法 hello‑algo.com 176 需要注意,由于从长度为 1 的子数组开始合并,所以 每个子数组都是有序的。因此,合并任务本质是要 将两 个有序子数组合并为一个有序数组。 11. 排序算法 hello‑algo.com 177 Figure 观察发现,归并排序的递归顺序就是二叉树的「后序遍历」。 ‧ 后序遍历:先递归左子树、再递归右子树、最后处理根结点。 ‧ 归并排序:先递归左子树、再递归右子树、最后处理合并。 // === File: merge_sort.cpp === /* 合并左子数组和右子数组 */ // 左子数组区间 [left, mid] // 右子数组区间 [mid + 1, right] void merge(vector&
    0 码力 | 187 页 | 14.71 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.0.0b4 C++版

    Merge Sort」基于分治思想实现排序,包含“划分”和“合并”两个阶段: 1. 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 2. 合并阶段:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较 长的有序数组,直至结束。 Figure 11‑10. 归并排序的划分与合并阶段 11.6.1. 算法流程 “划分阶段”从顶至底递归地将数组从中点切为两个子数组: mid] )和右子数组(区间 [mid + 1, right] )。 2. 递归执行步骤 1. ,直至子数组区间长度为 1 时,终止递归划分。 “合并阶段”从底至顶地将左子数组和右子数组合并为一个有序数组。需要注意的是,从长度为 1 的子数组开 始合并,合并阶段中的每个子数组都是有序的。 11. 排序 hello‑algo.com 211 11. 排序 hello‑algo.com 212 Figure 观察发现,归并排序的递归顺序与二叉树的后序遍历相同,具体来看: ‧ 后序遍历:先递归左子树,再递归右子树,最后处理根节点。 ‧ 归并排序:先递归左子数组,再递归右子数组,最后处理合并。 // === File: merge_sort.cpp === /* 合并左子数组和右子数组 */ // 左子数组区间 [left, mid] // 右子数组区间 [mid + 1, right] void merge(vector
    0 码力 | 343 页 | 27.39 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.0.0b5 C++版

    hello‑algo.com 214 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 // === File: binary_search_insertion.cpp === /* 二分查找插入点(存在重复元素) sort」是一种基于分治策略的排序算法,包含图 11‑10 所示的“划分”和“合并”阶段。 1. 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 2. 合并阶段:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较 长的有序数组,直至结束。 图 11‑10 归并排序的划分与合并阶段 11.6.1 算法流程 如图 11‑11 所示,“划 mid] )和右子数组(区间 [mid + 1, right] )。 2. 递归执行步骤 1. ,直至子数组区间长度为 1 时,终止递归划分。 “合并阶段”从底至顶地将左子数组和右子数组合并为一个有序数组。需要注意的是,从长度为 1 的子数组开 始合并,合并阶段中的每个子数组都是有序的。 第 11 章 排序 hello‑algo.com 242 图 11‑11 归并排序步骤 观察发现,归并排序与二叉树后序遍历的递归顺序是一致的。
    0 码力 | 377 页 | 30.69 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.1.0 C++ 版

    的元素,因此索引 ? 就是插入点。 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 第 10 章 搜索 hello‑algo.com 215 // === File: binary_search_insertion sort)是一种基于分治策略的排序算法,包含图 11‑10 所示的“划分”和“合并”阶段。 1. 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 2. 合并阶段:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较 长的有序数组,直至结束。 图 11‑10 归并排序的划分与合并阶段 11.6.1 算法流程 如图 11‑11 所示,“ mid] )和右子数组(区间 [mid + 1, right] )。 2. 递归执行步骤 1. ,直至子数组区间长度为 1 时终止。 “合并阶段”从底至顶地将左子数组和右子数组合并为一个有序数组。需要注意的是,从长度为 1 的子数组开 始合并,合并阶段中的每个子数组都是有序的。 第 11 章 排序 hello‑algo.com 240 图 11‑11 归并排序步骤 观察发现,归并排序与二叉树后序遍历的递归顺序是一致的。
    0 码力 | 379 页 | 18.47 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.0.0 C++版

    的元素,因此索引 ? 就是插入点。 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 第 10 章 搜索 hello‑algo.com 216 // === File: binary_search_insertion sort」是一种基于分治策略的排序算法,包含图 11‑10 所示的“划分”和“合并”阶段。 1. 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 2. 合并阶段:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较 长的有序数组,直至结束。 图 11‑10 归并排序的划分与合并阶段 第 11 章 排序 hello‑algo.com 241 [left, mid] )和右子数组(区间 [mid + 1, right] )。 2. 递归执行步骤 1. ,直至子数组区间长度为 1 时终止。 “合并阶段”从底至顶地将左子数组和右子数组合并为一个有序数组。需要注意的是,从长度为 1 的子数组开 始合并,合并阶段中的每个子数组都是有序的。 第 11 章 排序 hello‑algo.com 242 图 11‑11 归并排序步骤 观察发现,归并排序与二叉树后序遍历的递归顺序是一致的。
    0 码力 | 378 页 | 17.59 MB | 1 年前
    3
  • pdf文档 Hello 算法 1.2.0 简体中文 C++ 版

    的元素,因此索引 ? 就是插入点。 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 第 10 章 搜索 www.hello‑algo.com 215 // === File: binary_search_insertion sort)是一种基于分治策略的排序算法,包含图 11‑10 所示的“划分”和“合并”阶段。 1. 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 2. 合并阶段:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较 长的有序数组,直至结束。 图 11‑10 归并排序的划分与合并阶段 11.6.1 算法流程 如图 11‑11 所示,“ mid] )和右子数组(区间 [mid + 1, right] )。 2. 递归执行步骤 1. ,直至子数组区间长度为 1 时终止。 “合并阶段”从底至顶地将左子数组和右子数组合并为一个有序数组。需要注意的是,从长度为 1 的子数组开 始合并,合并阶段中的每个子数组都是有序的。 第 11 章 排序 www.hello‑algo.com 240 图 11‑11 归并排序步骤 观察发现,
    0 码力 | 379 页 | 18.48 MB | 10 月前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化

    艹标准委员会什么时候肯把他加入标准呢?看看人家 C 语言。 编译器优化:合并写入 将两个 int32 的写入合 并为一个 int64 的写入 。 合并写入:不能跳跃 但如果访问的两个元素地 址间有跳跃,就不能合并 了。 第 4 章:矢量化 更宽的合并写入:矢量化指令( SIMD ) 两个 int32 可以合并为一个 int64 四个 int32 可以合并为一个 __m128 xmm0 由 SSE 引入,是个 指令:敢不敢再宽一点? 为什么编译器没有用 256 位的 ymm0 ? 因为他不敢保证运行这个程序的电脑支持 AVX 指令集…… 两个 int32 可以合并为一个 int64 四个 int32 可以合并为一个 __m128 八个 int32 可以合并为一个 __m256 让编译器自动检测当前硬件支持的指令集 -march=native 让编译器自动判断当前硬件支 持的指令。老师的电脑支持 AVX
    0 码力 | 108 页 | 9.47 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化

    SOA 会让 CPU 不得不同时维护很多条预取赛道( mc_x, mc_y, mc_z ),当赛 道多了以后每一条赛道的长度就变短了,从而能够周转的余地时间比较少,不利于延迟隐藏。 而如果把这三条赛道合并成一条( mc ),这样同样的经费(缓存容量)能铺出的赛道(预 取)就更长,从而 CPU 有更长的周转时间来隐藏他内部计算的延迟。所以本案例中 AOS 比 SOA 好。 AOS 、 SOA 、 AOSOA 这就导致了虽然没有用到读取数据,但实际上缓存还是从内存读取了,从而浪费了 2 倍带宽。 绕过缓存,直接写入: _mm_stream_si32 • 因此需要把 16 次 float 用 SIMD 指令合并成一次 写入,且写入的地址要对齐到 64 字节,才能避免 浪费读取的带宽。这样的条件实在有点苛刻,毕 竟小彭老师的电脑还不支持 AVX512 。 • 可以用 _mm_stream_si32 指令代替直接赋值的 写入的地址必须 对齐到 16 字节,否则会产生段错误等异 常。 stream 的限制:最好是连续的写入 • 需要注意, stream 系列指令写入的地址 ,必须是连续的,中间不能有跨步,否则 无法合并写入,会产生有中间数据读的带 宽。 写入 1 比写入 0 更慢? • 很简单,因为写入 0 被编译器自动优化成 了 memset ,而 memset 内部利用了 stream 指令得以更快写入。
    0 码力 | 147 页 | 18.88 MB | 1 年前
    3
共 18 条
  • 1
  • 2
前往
页
相关搜索词
深入深入浅出MFCHello算法1.00b2C++0b10b40b51.11.2简体中文简体中文高性性能高性能并行编程优化课件0407
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩