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

【C++入门(一)】半小时入门C++开发(深入理解new+List+范围for+可变参数)

目录

一.深入理解new

使用格式

二.List列表

定义一个列表

迭代器

添加元素

删除元素

排序

反转序列

三.范围for

四.可变参数

std::initializer_list

可变参数模板(variadic template)


一.深入理解new

        类似于C语言中的malloccallocrealloc关键字,在C++中动态分配内存一般使用new关键字,其返回值是一个指向内存块的地址。

使用格式

new:

  • 类型指针  指针变量名  =  new  类型名;
    • Type*  variable = new Type;
  • 类型指针  指针变量名  =  new  类型名(初始值);
    • Type*  variable = new Type();
  • 类型指针  指针变量名  =  new  类型名[元素个数];
    • Type*  variable = new Type[];

delete:

  • delete 指针变量名;
    • delete  variable;//释放单个空间
  • delete[] 指针变量名;
    • delete[]  variable;//连续释放多个空间
//申请内存空间
int* p = new int;
//申请并初始化
int* p = new int(1);
//申请连续10个空间,由于一个指针为4字节,所以总共4*10=40
int* p = new int[10];//释放单个空间
delete p;
//释放多个空间,常用于数组
delete[] arr;

new对于对象的空间申请和分配有很好的效果:

class A{
public:A(int a = 10){};~A(){};
};//合法但不应使用,未调用构造函数初始化
A* a = new A;
//为对象申请空间,并初始化
A* a = new A();
//在类的构造函数中有默认参数时,可以连续申请多个空间
A* a = new A[10];delete a;

        即,new去申请对象会先申请对象的空间并调用对象的构造函数完成对象的初始化;delete会先去完成对象的资源清理,再将对象所占的空间释放掉。 

二.List列表

        List是C++的一个序列容器,底层结构是一个带头双向循环链表,使用列表来入和删除元素的效率较高,适用于频繁进行插入和删除操作;但不能直接通过位置(下标)来直接访问元素。想要访问list的某个元素,必须从list的一端(或已知位置)迭代到该元素。

定义一个列表

list <typename> name;

迭代器

list<string> a;
list<string>::iterator it;	// 迭代器for(it=a.begin();it!=a.end();it++)
{string temp=*it;print(temp);
}

添加元素

void push_front(const T& x);	// 头部添加
void push_back(const T& x);		// 尾部添加
insert(iterator, value);        //迭代器任意添加

删除元素

void pop_front();		// 头部删除
void pop_back();		// 尾部删除
myList.remove(value);   //删除特定值元素
mylist.remove_if(func)  //删除满足特定条件的元素
mylist.erase(it);       //迭代器删除元素

排序

myList.sort();//降序排列

反转序列

myList.reverse();

三.范围for

        C++11 引入一新的语法范围-based for 循环(range-based for loop),用于简化遍历容器或集合中的元素。

//普通循环
for(表达式 1; 表达式 2; 表达式 3)
{// 循环体
}// 范围for循环
for (int declaration : expression) 
{ // 循环体
}

注意: 

  • 适用范围广泛:范围for循环可以用来遍历任何支持 begin()end() 函数的容器,比如 std::vectorstd::arraystd::list 等标准容器。

四.可变参数

std::initializer_list

std::initializer_list用于表示某种特定类型的值的数组,是一种模板类型。

#include <initializer_list>void func(std::initializer_list<int> list) 
{for (int a : list) {std::cout << a << " ";}std::cout << std::endl;
}

特别注意:用initializer_list传递参数只能读,不能写!

可变参数模板(variadic template)

template<class T, class... Args>
//template<typename T, typename... Args>
void func(const T &t, const Args&... test); 
  1. 这里的"class"和"typename"表示“这里声明的 T 是一个类型参数”,并非是指类。
  2. class T 告诉编译器 T 是一个类型参数。
  3. class... Args 告诉编译器 Args 是一个类型参数包,它可以包含多个类型。

相关文章:

【C++入门(一)】半小时入门C++开发(深入理解new+List+范围for+可变参数)

目录 一.深入理解new 使用格式 二.List列表 定义一个列表 迭代器 添加元素 删除元素 排序 反转序列 三.范围for 四.可变参数 std::initializer_list 可变参数模板&#xff08;variadic template&#xff09; 一.深入理解new 类似于C语言中的malloc、calloc和reallo…...

Vue 3与TypeScript集成指南:构建类型安全的前端应用

在Vue 3中使用TypeScript&#xff0c;可以让你的组件更加健壮和易于维护。以下是使用TypeScript与Vue 3结合的详细步骤和知识点&#xff1a; 1. 环境搭建 首先&#xff0c;确保你安装了Node.js&#xff08;推荐使用最新的LTS版本&#xff09;和npm或Yarn。然后&#xff0c;安…...

MATLAB和Python发射光谱

在MATLAB和Python中&#xff0c;可以使用不同的库来生成发射光谱。以下是两种语言的简单示例&#xff1a; MATLAB: % 定义波长&#xff08;nm&#xff09;和强度&#xff08;a.u.&#xff09; wavelengths linspace(300, 1000, 1000); intensity sin(wavelengths / 500);…...

IEEE(常用)参考文献引用格式详解 | LaTeX参考文献规范(IEEE Trans、Conf、Arxiv)| 期刊会议名缩写查询

期刊 ** 期刊:已正式出版&#xff08;有期卷号) ** 期刊:录用后在线访问即Early access&#xff08;无期卷号&#xff09;会议Arxiv论文 期刊 期刊:已正式出版&#xff08;有期卷号&#xff09; article{gu2024ai, title{{AI}-Enhanced Cloud-Edge-Terminal Collaborative Ne…...

第二十周:机器学习

目录 摘要 ABSTRACT 一、吴恩达机器学习exp2——逻辑回归 1、logistic函数 2、数据预处理 3、损失函数 4、梯度下降 5、设定评价指标 6、决策边界 7、正则化 二、动手深度学习pytorch——数据预处理 1、数据集读取 2、缺失值处理 3、转换为张量格式 总结 摘要…...

Elasticsearch面试内容整理-Elasticsearch 基础概念

Elasticsearch 是一个基于 Apache Lucene 的开源分布式搜索和分析引擎,提供强大的全文本搜索、实时数据分析、分布式存储等功能。以下是 Elasticsearch 的一些基础概念: 什么是 Elasticsearch? ● Elasticsearch 是一个用于全文搜索和实时分析的分布式搜索引擎。 ● 开源和可…...

机器学习算法模型系列——Adam算法

Adam是一种自适应学习率的优化算法&#xff0c;结合了动量和自适应学习率的特性。 主要思想是根据参数的梯度来动态调整每个参数的学习率。 核心原理包括&#xff1a; 动量&#xff08;Momentum&#xff09;&#xff1a;Adam算法引入了动量项&#xff0c;以平滑梯度更新的方向…...

Qt按钮类-->day09

按钮基类 QAbstractButton 标题与图标 // 参数text的内容显示到按钮上 void QAbstractButton::setText(const QString &text); // 得到按钮上显示的文本内容, 函数的返回就是 QString QAbstractButton::text() const;// 得到按钮设置的图标 QIcon icon() const; // 给按钮…...

基于xr-frame实现微信小程序的手部、手势识别3D模型叠加和石头剪刀布游戏功能

前言 xr-frame是一套小程序官方提供的XR/3D应用解决方案&#xff0c;基于混合方案实现&#xff0c;性能逼近原生、效果好、易用、强扩展、渐进式、遵循小程序开发标准。xr-frame在基础库v2.32.0开始基本稳定&#xff0c;发布为正式版&#xff0c;但仍有一些功能还在开发&#…...

基于Kafka2.1解读Consumer原理

文章目录 概要整体架构流程技术名词解释技术细节coordinatorfetcherclientconsumer#poll的主要流程 全局总览小结 概要 继上一篇讲Producer原理的文章过去已经一个多月了&#xff0c;今天来讲讲Consumer的原理。 其实源码早就读了部分了&#xff0c;但是最近工作比较忙&#x…...

深度学习:ResNet每一层的输出形状

其中 /**在输出通道数为64、步幅为2的7 7卷积层后&#xff0c;接步幅为2的3 3的最大汇聚层,与GoogLeNet区别是每个卷积层后增加了批量规范层**/ b1 nn.Sequential(nn.Conv2d(1, 64, kernel_size7, stride2, padding3),nn.BatchNorm2d(64), nn.ReLU(),nn.MaxPool2d(kernel_s…...

国内几大网络安全公司介绍 - 网络安全

Posted by zhaol under 安全 , 电信 , 评论 , 中国 中国国内的安全市场进入“战国时期”&#xff0c;启明星辰、绿盟、天融信、安氏、亿阳、联想网御、华为等战国七雄拥有雄厚的客户资源和资金基础&#xff0c;帐前皆有勇猛善战之士&#xff0c;渐渐开始统领国内安全市场的潮流…...

修改Android Studio项目配置JDK路径和项目Gradle路径的GUI工具

概述 本工具提供了一个基于Python Tkinter的图形用户界面&#xff08;GUI&#xff09;&#xff0c;用于帮助用户搜索并更新Android Studio项目中的config.properties文件里的java.home路径&#xff0c;以及workspace.xml文件中的last_opened_file_path路径。该工具旨在简化手动…...

✅DAY30 贪心算法 | 452. 用最少数量的箭引爆气球 | 435. 无重叠区间 | 763.划分字母区间

452. 用最少数量的箭引爆气球 解题思路&#xff1a;首先把原数组按左边界进行排序。然后比较[i-1]的右边界和[i]的左边界是否重叠&#xff0c;如果重叠&#xff0c;更新当前右边界为最小右边界和[i1]的左边界判断是重叠。 class Solution:def findMinArrowShots(self, points:…...

关于Redis单线程模型以及IO多路复用的理解

IO多路复用 -> redis主线程 -> 事件队列 -> 事件处理器 1.IO多路复用机制的作用&#xff1a; 操作系统的多路复用机制&#xff08;如 epoll、select&#xff09;负责监听多个文件描述符&#xff08;如客户端连接&#xff09;上的事件。 当某个文件描述符上的事件就绪…...

学习ASP.NET Core的身份认证(基于Cookie的身份认证1)

B/S架构程序可通过Cookie、Session、JWT、证书等多种方式认证用户身份&#xff0c;虽然之前测试过用户登录代码&#xff0c;也学习过开源项目中的登录认证&#xff0c;但其实还是对身份认证疑惑甚多&#xff0c;就比如登录验证后用户信息如何保存、客户端下次连接时如何获取用户…...

奇门遁甲中看债务时用神该怎么取?

奇门遁甲中看债务的用神 一、值符 值符在债务关系中可代表债权人&#xff08;放贷人&#xff09;。例如在预测放贷时&#xff0c;以值符为放贷人&#xff0c;如果值符克天乙&#xff08;借贷人&#xff09;或者天乙生值符&#xff0c;这种情况下可以放贷&#xff1b;反之&#…...

Redis 集群主要有以下几种类型

Redis 集群主要有以下几种类型&#xff1a; 主从复制模式&#xff1a; 这种模式包含一个主数据库实例&#xff08;master&#xff09;与一个或多个从数据库实例&#xff08;slave&#xff09;。客户端可以对主数据库进行读写操作&#xff0c;对从数据库进行读操作&#xff0c;主…...

使用 Axios 拦截器优化 HTTP 请求与响应的实践

目录 前言1. Axios 简介与拦截器概念1.1 Axios 的特点1.2 什么是拦截器 2. 请求拦截器的应用与实践2.1 请求拦截器的作用2.2 请求拦截器实现 3. 响应拦截器的应用与实践3.1 响应拦截器的作用3.2 响应拦截器实现 4. 综合实例&#xff1a;一个完整的 Axios 配置5. 使用拦截器的好…...

mini-lsm通关笔记Week2Day5

项目地址&#xff1a;https://github.com/skyzh/mini-lsm 个人实现地址&#xff1a;https://gitee.com/cnyuyang/mini-lsm Summary 在本章中&#xff0c;您将&#xff1a; 实现manifest文件的编解码。系统重启时从manifest文件中恢复。 要将测试用例复制到启动器代码中并运行…...

从航拍影像到三维地形:OpenDroneMap实战指南与常见问题解答

从航拍影像到三维地形&#xff1a;OpenDroneMap实战指南与常见问题解答 【免费下载链接】ODM A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. &#x1f4f7; 项目地址: https://gitcode.com/gh_mirrors/od…...

告别龟速下载!手把手教你用Aspera ascp命令高效获取SRA数据(附常见错误排查)

告别龟速下载&#xff01;手把手教你用Aspera ascp命令高效获取SRA数据&#xff08;附常见错误排查&#xff09; 在生物信息学研究中&#xff0c;获取公共数据库中的测序数据是许多分析的第一步。然而&#xff0c;传统的FTP下载方式往往速度缓慢&#xff0c;尤其是当需要下载大…...

Zotero Reference插件:让PDF文献管理效率提升70%的实用指南

Zotero Reference插件&#xff1a;让PDF文献管理效率提升70%的实用指南 【免费下载链接】zotero-reference PDF references add-on for Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-reference 一、价值定位&#xff1a;重新定义学术文献处理方式 认识…...

2025年项目管理工具深度评测:Gitee如何引领技术团队协作新范式

随着数字化转型进入深水区&#xff0c;项目管理工具正从简单的任务管理平台进化为企业数字化转型的核心枢纽。在2025年最新发布的《全球项目管理工具评测报告》中&#xff0c;Gitee凭借其独特的"开发协作"一体化设计&#xff0c;成为中国技术团队的首选平台。本文将深…...

告别本地局限!OpenClaw从本地监听改公网监听,手把手实操教程

💡 前言 在部署OpenClaw的过程中,很多小伙伴都会遇到一个共性问题:服务默认仅监听本地回环地址([127.0.0.1](127.0.0.1)),只能在服务器本机访问,完全没法满足远程管理、跨设备调用、公网服务暴露的实际业务需求。想要让OpenClaw真正发挥作用,核心就是把监听模式从本地…...

索尼Bravia家庭影院新品登场,能否重塑市场格局?

索尼Bravia新品&#xff1a;模块化家庭影院新选择索尼宣布推出七款新的Bravia家庭影院产品&#xff0c;涵盖一台电视、两款条形音箱、三款低音炮和后置音箱。除Theater Bar 5外&#xff0c;产品可自由搭配组合。其中&#xff0c;Bravia Theater Bar 7作为中高端条形音箱&#x…...

payload缺了2个

soc和mcu收发验证中。其他block里面都有&#xff0c;只缺了2个。每个block里都是一样的rte的read和write那么问题在底软&#xff0c;不在我们ap/cp。如图&#xff0c;id6和9这里缺了。底软更新后有了&#xff1a;代码里面每个都一样的&#xff0c;问题不在这里&#xff1a;FUNC…...

Android 11 自动亮度算法优化与曲线配置解析

1. Android 11自动亮度技术演进 记得第一次用上Android 11的手机时&#xff0c;最让我惊喜的就是屏幕亮度调节变得特别"聪明"。以前在电影院掏出手机总被刺得睁不开眼&#xff0c;现在却能像人眼一样自然地适应环境。这背后其实是Google对自动亮度算法做了重大升级&a…...

4吨卧式燃气蒸汽锅炉食品厂洗涤商用

WNS型4吨卧式燃气蒸汽锅炉&#xff0c;专为食品加工、商用洗涤等行业量身打造&#xff0c;是高效稳定、环保节能的核心供汽设备&#xff0c;完美适配食品蒸煮杀菌、洗涤熨烫烘干等高频蒸汽需求&#xff0c;助力企业降本增效、合规生产。 锅炉采用卧式三回程湿背式经典结构&…...

GME多模态向量模型助力AI编程:代码与注释的跨模态理解工具

GME多模态向量模型助力AI编程&#xff1a;代码与注释的跨模态理解工具 1. 引言&#xff1a;当代码能听懂人话 你有没有过这样的经历&#xff1f;面对一个庞大的代码库&#xff0c;想找一个实现特定功能的函数&#xff0c;却记不清它的名字&#xff0c;只能靠模糊的记忆在文件…...