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

c++算法学习笔记

c++算法学习笔记

变量的直接初始化

变量的直接初始化对于C++语法是一个重要的功能,可以用来初始化变量

class Data{
public:Data():m_map({{1,2},{3,4}}){}void printMap(){for_each(m_map.begin(), m_map.end(), [](auto& pair){cout << pair.first << pair.second << endl;})}
private:map<int, string> m_map;
};

map的直接初始化方式为map({{},{}})或者map{{},{},{}}

算法纪要

1、能用递归就不用栈,能用stl就一定不自己实现
2、不提倡防御式编程,不校验malloc/new返回的指针是否为nullptr,不许检查内部函数入口,参数有效性

编程技巧

1、判断浮点数a和b是否相等时,不能直接用a=b,应判断fabs(a-b)是否小于某个阈值,比如1e-9
2、判断是否奇数时,使用x % 2 != 0, 不要使用x%2==1,因为可能会有负数
3、char的值作为数组下标,不太可取,因为char可能有负值
4、vector和string的使用优先于动态分配的数组
5、使用reserve避免不必要的重新分配

vector数组会有一个size和capacity的概念,size代表逻辑容量,capacity代表物理已经分配的内存的容量。默认初始化时,容量为1;resize()操作的逻辑容量,并不真正分配内存;reserver()操作用于操作内存容量,可以提前分配内存,避免扩容导致的性能下降。

考虑1个问题:
1、当size大于capacity时会发生什么?
此时物理分配的内存不够用,此时会触发自动扩容,扩容并非简单意义上接着扩容,而是分为三步:申请新内存通常为capacity的两倍(默认是2倍),复制旧内存区域的值到新内存区域,释放旧内存,更新capacity为新内存大小。

alt text

昨日一题
80. 删除有序数组中的重复项 II

class Solution {
public:int removeDuplicates(vector<int>& nums) {// 此问题中删除重复的元素,最多只能保留2次,如果小于2个元素则直接返回if (nums.size() < 3) return nums.size();// 本质上是要更新cntint cnt =2; // cnt记录新的数组位置,所以更要明确,数组该怎么更新呢for (int i = 2; i < nums.size(); i++) {if (nums[i] != nums[cnt-2]) { // 核心更新机制nums[cnt++] = nums[i];}}return cnt;}
};
http://www.hskmm.com/?act=detail&tid=21125

相关文章:

  • test5
  • 最高人民法院新劳动争议司法解释一 理解与适用
  • PyPI维护者遭遇钓鱼攻击:假冒登录网站威胁开源供应链安全
  • Tomcat 相关漏洞扫描器(一) - 指南
  • 题解:CF2125E Sets of Complementary Sums
  • 929
  • ManySpeech —— 使用 C# 开发人工智能语音应用
  • 20250929
  • 驱动基础知识速览(迅为RK3568文档)
  • 学习笔记-析合树
  • CSPJ2025模拟赛
  • java代码审计-Shiro认证授权
  • CF868F题解
  • ThinkPHP反序列化分析
  • AT_iroha2019_day4_l 题解
  • AT_abc290_f 题解
  • 一张图读懂绿电直连系统架构 - 智慧园区
  • P5469 [NOI2019] 机器人 题解
  • 题解:P14080 [GESP202509 八级] 最小生成树
  • 实用指南:Spring Cloud Gateway 实战:全局过滤器日志统计与 Prometheus + Grafana 接口耗时监控
  • GTSAM 中自定义因子(Custom Factor)的详解和实战示例 - 指南
  • AtCoder AGC073 A 题解
  • CF506C Mr. Kitayuta vs. Bamboos 51nod1457 小K vs. 竹子 题目分析
  • 北京 意大利 硕士学签/D签 vfs代办 材料清单
  • temp
  • 我有园子了
  • 使用 Jenkins 的流水线方案实施 CI/CD
  • 加密的病例单
  • 详细介绍:视频融合平台EasyCVR构筑智慧交通可视化管理与智能决策中枢
  • docker 在x86上build arm 镜像