acm培训 part 1(学习总结)

news2025/5/31 19:26:07

第一部分的重点为语法糖,时空复杂度,stl容器等等,下面就简单介绍一下这些部分。

1. 语法糖

1.1 定义

语法糖是由英国计算机科学家彼得·约翰·兰达提出的一个术语,指的是编程语言中添加的某种语法,这种语法对语言的功能没有影响,但可以使代码更简洁、易读,或者更符合程序员的编程习惯。

1.2 auto关键字

auto主要作用是自动识别变量类型 注意使用auto定义变量时必须初始化,auto变量无法作为参数。

auto x = 10; //  int
auto y = 1.1; //  double
auto z = 'B' //  char

 当变量类型比较长时,auto自动识别变量类型,使代码变得简洁,有时候也能规避类型判断错误导致的精度错误。注意auto不能和指针结合,没有指针auto型。

auto a=1;b=3.1;
//这样是错误的,因为运用auto同一句语句两个成员必须为同样的类型。
auto a;
//这样子是错误的,auto必须初始化。
void swap(auto a)
//这是错误的,auto a不能作为参数

1.3 for循环

  对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误,因此 C++11 中引入了基于范围的for循环。范围 for 循环可以更简单地遍历顺序容器中的每一个元素。
支持数组, vector , deque , list , string 等支持顺序访问的容器。

#include <iostream>
using namespace std;
int main() 
{
  int a[] = {1, 2, 3, 4, 5, 6};
  for (int l : a) 
  {
     std::cout << l << ' ';
  }
   return 0;
}

注意在这里l不需要初始化

1.4 auto和for循环的结合

上文曾说,auto可以帮助判断类型,那么我们在for循环中初始变量l时,就可以用这种方法,将int用auto替换。

#include <iostream>
using namespace std;
int main() 
{
  int a[] = {1, 2, 3, 4, 5, 6};
  for (auto l : a) 
  {
     std::cout << l << ' ';
  }
   return 0;
}

1.5 using

可以作为命名空间的展开,比如

using namespace std;

还可以用来别名声明,比如

using int32 = long;
using int64 = long long;
using struct listnode=node;

2. 时空复杂度

2.1 时间复杂度

C++ 程序运行时,每条语句的耗时基本相同。故语句执行次数可以大致反映程序的运行时间。所以如果以一条语句运算时间为标准1,则n条语句运行时间则为n,这就是时间复杂度的来源。

void func2(int n) 
{
  for (int i = 1; i <= n;  ++ i ) 
  {
        printf("@"); // 执行 n 次
  }
}

该程序时间复杂度为n

int func5(int n) {
int i = 0, sum = 0;
while (sum <= n) {
i ++;
sum += i;
}
return sum;
}

该程序时间复杂度为根号n

2.2 空间复杂度

空间复杂度是衡量程序内存占用的量度,它是变量定义次数的化简结果,采用和时间复杂度
完全相同的记号和化简规则。

void func6(int n) {
int a; // 定义 1 次
char b[n]; // 数组含 n 个变量,定义 n 次
float c[n][n]; // 数组含 n^2 个变量,定义 n^2 次
}

3.STL

常用的数据结构:数组(array) , 链表(list), tree(树),栈(stack), 队列(queue), 集合(set),映射表(map), 根据数据在容器中的排列特性,这些数据分为序列式容器和关联式容器两种。

3.1 stack

栈。只允许在栈顶进行插入和删除操作。

3.2 queue

队列。只允许在队尾插入元素,在队头删除元素。

3.3 vector

动态数组。能根据需要自动扩容,也能手动调整容量。

3.4 list

链表。支持在任意位置插入和删除元素,但不支持随机访问.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281471.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ComfyUI】python调用生图API,实现批量出图

官方给的示例&#xff1a; https://github.com/comfyanonymous/ComfyUI/blob/master/script_examples/websockets_api_example.pyhttps://github.com/comfyanonymous/ComfyUI/blob/master/script_examples/websockets_api_example.pyhttps://github.com/comfyanonymous/ComfyU…

【2024年华为OD机试】(B卷,100分)- 非严格递增连续数字序列 (JavaScriptJava PythonC/C++)

一、问题描述 题目描述 给定一个仅包含大小写字母和数字的字符串&#xff0c;要求找出其中最长的非严格递增连续数字序列的长度。非严格递增连续数字序列指的是序列中的数字从左到右依次递增或保持不变&#xff0c;例如 12234 就是一个非严格递增连续数字序列。 输入描述 输…

C# OpenCV机器视觉:红外体温检测

在一个骄阳似火的夏日&#xff0c;全球却被一场突如其来的疫情阴霾笼罩。阿强所在的小镇&#xff0c;平日里熙熙攘攘的街道变得冷冷清清&#xff0c;人们戴着口罩&#xff0c;行色匆匆&#xff0c;眼神中满是对病毒的恐惧。阿强作为镇上小有名气的科技达人&#xff0c;看着这一…

Android Audio音频系统

一、Audio音频架构简介 二、Android Audio系统框架 三、Audio架构以及各层的代码分布图 四、音频框架在Android系统中的进一步细化 五、创建声卡和注册声卡 六、Android Audio系统的结构 七、Audio音频原理介绍 八、Audio音频策略制定与策略执行的调用流程 九、Android…

配电自动化系统“三区四层”数字化架构

目录 一、“三区四层”数字化架构的特点和优势 二、“三区四层”数字化架构面临的挑战 三、针对“三区四层” 数字化架构在实际应用中面临挑战的措施 配电自动化系统 “三区四层” 数字化架构是一种用于规范和指导配电自动化系统建设与运行的体系结构&#xff0c;对保障电力…

编程界“华山论剑”:PHP与Go,谁主沉浮?

在编程的广阔天地里&#xff0c;选择一门合适的编程语言就如同为一场冒险挑选趁手的武器&#xff0c;至关重要却又常常令人纠结。当我们面对 PHP 与 Go 这两种备受瞩目的编程语言时&#xff0c;这种纠结愈发明显&#xff1a;PHP&#xff0c;作为 Web 开发领域的老牌劲旅&#x…

element tbas增加下拉框

使用Tabs 标签页的label插槽&#xff0c;嵌入Dropdown 下拉菜单&#xff0c;实现Tabs 标签页增加下拉切换功能 Tabs 标签页 tab-click"事件"&#xff08;这个事件当中到拥有下拉框的tab里时&#xff0c;可以存一下Dropdown 第一个菜单的id&#xff0c;实现点击到拥有…

AIGC视频生成模型:ByteDance的PixelDance模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance&#xff0c;论文于2023年11月发布&#xff0c;模型上线于2024年9月&#xff0c;同时期上线的模型还有Seaweed&…

mysql 学习3 SQL语句--整体概述。SQL通用语法;DDL创建数据库,查看数据库,删除数据库,使用数据库;

SQL通用语法 SQL语句分类 DDL data definition language : 用来创建数据库&#xff0c;创建表&#xff0c;创建表中的字段&#xff0c;创建索引。因此成为 数据定义语言 DML data manipulation language 有了数据库和表以及字段后&#xff0c;那么我们就需要给这个表中 添加数…

Pyside6(PyQT5)中的QTableView与QSqlQueryModel、QSqlTableModel的联合使用

QTableView 是QT的一个强大的表视图部件&#xff0c;可以与模型结合使用以显示和编辑数据。QSqlQueryModel、QSqlTableModel 都是用于与 SQL 数据库交互的模型,将二者与QTableView结合使用可以轻松地展示和编辑数据库的数据。 QSqlQueryModel的简单应用 import sys from PySid…

C语言文件操作:标准库与系统调用实践

目录 1、C语言标准库文件操作 1.1.题目要求&#xff1a; 1.2.函数讲解&#xff1a; fopen 函数原型 参数 常用的打开模式 返回值 fwrite函数 函数原型 参数 返回值 注意事项 fseek函数 函数原型 参数 返回值 fread函数 函数原型 参数 返回值 fclose 函数…

【2024年华为OD机试】 (C卷,100分)- 多段线数据压缩(JavaScriptJava PythonC/C++)

一、问题描述 问题描述 给定一个多线段的坐标列表&#xff0c;每个坐标由行号和列号表示。多线段的走向只能是水平、竖直或斜向45度。输入数据包含冗余的坐标点&#xff0c;要求输出最简化的坐标列表&#xff0c;仅保留起点、拐点和终点。 输入描述 输入数据为多线段的坐标…

状态模式——C++实现

目录 1. 状态模式简介 2. 代码示例 3. 单例状态对象 4. 状态模式与策略模式的辨析 1. 状态模式简介 状态模式是一种行为型模式。 状态模式的定义&#xff1a;状态模式允许对象在内部状态改变时改变它的行为&#xff0c;对象看起来好像修改了它的类。 通俗的说就是一个对象…

数据库SQLite和SCADA DIAView应用教程

课程简介 此系列课程大纲主要包含七个课时。主要使用到的开发工具有&#xff1a;SQLite studio 和 SCADA DIAView。详细的可成内容大概如下&#xff1a; 1、SQLite 可视化管理工具SQLite Studio &#xff1a;打开数据库和查询数据&#xff1b;查看视频 2、创建6个变量&#x…

java开发,IDEA转战VSCODE配置(mac)

一、基本java开发环境配置 前提&#xff1a;已经安装了jdk、maven、vscode&#xff0c;且配置了环境变量 1、安装java相关的插件 2、安装spring相关的插件 3、vscode配置maven环境 打开 VsCode -> 首选项 -> 设置&#xff0c;也可以在setting.json文件中直接编辑&…

python爬虫的学习流程(1-前提准备)

这里主要记录一下我的python爬虫初级的学习的流程 1.python爬虫入门实战课 什么是爬虫&#xff1f;众说纷纭&#xff0c;我们引用维基百科上对网络爬虫的介绍&#xff1a; 网络爬虫&#xff08;英语&#xff1a;Web crawler&#xff09;&#xff0c;也叫网络蜘蛛&#xff08;…

数据结构初阶之双向链表的介绍与双向链表的实现

一、概念与结构 带头双向循环链表 next &#xff1a;指向下一个结点&#xff08;后继结点&#xff09; prev &#xff1a;指向前一个结点&#xff08;前驱结点&#xff09; 二、实现双向链表 项目创建的时候&#xff0c;要创建一个头文件&#xff08;.h&#xff09;List.h …

CICD集合(六):Jenkins配置Editable Email Notification

CICD集合(六):Jenkins配置Editable Email Notification 1、系统配置 1.1、Jenkins Location 1.2、邮件通知 1、SMTP服务器:imap.exmail.qq.com (因qq企业邮箱) 2、邮箱后缀:@xxx.com 3、勾选:使用SMTP认证 用户名:

Golang 中除了加锁还有哪些安全读写共享变量的方式?

Golang 中除了加锁还有哪些安全读写共享变量的方式&#xff1f; 在 Golang 中&#xff0c;除了使用 Mutex 锁来保护共享变量外&#xff0c;还可以通过 Channel 和 原子性操作 来实现安全读写共享变量。 1. 使用 Channel 原理 Channel 是 Golang 中用于 Goroutine 之间通信的…

应用层协议 HTTP 讲解实战:从0实现HTTP 服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; HTTP 协议 &#x1f98b; 认识 URL&#x1f98b; urlencode 和 urldecode 二&#xff1a;&#x1f525; HTTP 协议请求与响应格式 &#x1f98b; HTTP 请求…