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

c 到 c++ 过渡

c++基础入门

#include <iostream>
#include <cmath>
#include <unistd.h>	// 总结:按照书写依次往下,先看 iostream 再看 cxxx 最后 xxx.husing namespace std;	// 本质:自定义作用域,作用域就在该命名空间内部。一个命名空间内部名字不重名就可以,不同命名空间可以相同int main()
{// 输出cout << "abc" << 100 << endl;	// cerr << "abc";  不带缓冲区输出,无需换行缓冲// 输入int n;cin >> n >> m;	// endl 换行符return 0;
}
// std 看作班级,std::cout 就是告知某班某成员,避免反复书写,直接写在程序开头

c++编译

g++ old_name -o new_name

字符串

string 会自动分配扩大内存空间// 空间扩展演示
string s14;
cin >> s14;	// 输入123456789
cout << s14.capacity() << endl;	// 空间大小  15	默认空间大小就是15,若后续超出范围会自动扩展
cout << s14.length() << endl;	// 实际大小  9// 输入
sreint s;
cin >> s;
cout << s << endl;// 赋值
string s1 = "abcd";// 复制
string s2;
s2 = s1;// 拼接
string s3;
s3 = "xyz" + s1;
s3 += "123";// 比对
if(s1 ==  "abcd")cout << s1 << "== abcd" << endl;
if(s1 > "aBcd")cout << "yes" << endl;	// 挨个按照 ascoll 码值来对比// 展示循环打印字符串
string s[10] = "abcdef";
for(int i = 0; i < s.length; i++)
{cout << s[i];
}
cout << endl;// 删除
string s("");
cout << s << endl; 
s.erase(4,5);	// 从第四个位置开始删除,删除5个索引
cout << s << endl;// 查找
cout << s.find("all", 30, 100) << endl;	// 从下标索引30开始向后查找,一直查到100
cout << s.find_last_of("So") << endl;	// 从后往前查询// 替换
string s("123456789");
cout << s.replace(5, 5, "A") << endl;	// 将下表为5的位置开始,替换后面5个为A

引用

概念:给一个已有的对象(变量)取别名

& 号放在定义语句当中就是取别名// 变量
int a = 100;
int &b = a;	// 让 a 的别名叫做 b// 数组
int c[10] = {1,2,3};
int (&d)[10] = c;// 指针
int *p = &a;	// 此时是取地址,不同于取别名
int *(&q) = p;注意:1、不可以给常量取引用,int &r = 100;  常量是匿名的2、引用必须同时定义与赋值3、相较于指针更加快速高效// 例如:交换两个数的值
void swap(&a, &b)
{int temp;temp = a;a = b;b = temp;
}
int main()
{int a = 1, b = 2;swap(a, b);cout << a << b << endl;return 0;
}

函数默认参数

void f(int a, float b = 3.14);void f(int a, float b)
{cout << a << endl;cout << b << endl;
}int main()
{f(100, 1.23);	// 显式的给 b 传递参数 1.23f(200);	// b 使用默认值,3.14
}注意:1、为防止二义性,默认值参数只能位于最右边2、声明指定默认值,定义不写默认值

函数重载

本质就是同一个函数名有不同的版本。

函数重载时,调用函数是在编译期间就确定了具体的调用对象,因此将函数重载叫做静态联编

可以形成重载的情形(只要满足一个即可):

1、参数个数不同

2、参数类型不同

3、参数顺序不同

3、类方法的const属性

4、普通指针与常目标指针

// 参数个数不同
void f(int a);
void f(int a, int b);// 参数类型不同
void f(int a);
void f(float b);// 参数顺序不同
void f(int a, float b);
void f(float a, int b);// 类方法的 const 属性
class Node
{void f(int a);void f(int a)const;
};// 普通指针与常目标指针  查看匹配度
void f(char *p);
void f(const char *p);

不可以形成重载的情形:

1、函数名、函数参数列表完全一致

2、函数返回值类型差异

3、静态函数声明(static

4、const型变量(包括常指针)

// 函数名、函数参数列表完全一致
void f(int a);
void f(int a);// 函数返回值类型差异
void f(int a);
int f(int a);// 静态函数声明(static)
void f(int a);
static void f(int a);// const 型变量(包括常指针)
void f(int *a);
void f(int * const a);

堆内存管理

new:分配堆内存

delete:释放堆内存

int main()
{// 分配单个int *p = new int;	// 要在堆内存开辟一块新的可以放下 int 类型的空间*p1 = 666;delete p1;// 分配多个char *k = new char[1000];for(int i = 0; i < 1000; i++){k[i] = 666;}delete [] k;return 0;
}注意:
相比于 malloc 的区别:(delete 与 free类似于此)1、new 会自动调用类的构造函数,而 malloc 不会;

枚举循环

int main()
{int a[] = {1,2,3,4,5};for(int i : a)	// 用 i 来依次取得数组内部数据{cout << i << endl;}return 0;
}int main()
{list<string> names;names.push_back("1");names.push_back("2");names.push_back("3");for(string n : names)cout << n << endl;	// 将名字全部打印出来,前面的类型对应后面需要打印的元素的类型return 0;
}// 若是版本不支持则: g++ old_name -o new_name -std=c++11

相关文章:

c 到 c++ 过渡

c基础入门 #include <iostream> #include <cmath> #include <unistd.h> // 总结&#xff1a;按照书写依次往下&#xff0c;先看 iostream 再看 cxxx 最后 xxx.husing namespace std; // 本质&#xff1a;自定义作用域&#xff0c;作用域就在该命名空间内部。…...

[linux驱动开发--环境搭建] qemu-9.1+linux-kernel-6.11

本文档模拟vexpress-a9开发板&#xff0c;作为铁头娃&#xff0c;要学就学最新的包 已经上传到github仓库 目录 编译qemu-9.1编译linux-kernel-6.11编译busybox-1.36.1NFS挂载 1. qemu-stable-9.1源码编译安装 1.1. 下载qemu源码的stable-9.1分支 仓库地址 mkdir qemu_9.…...

019集——获取CAD图中多个实体的包围盒(CAD—C#二次开发入门)

如下图所示&#xff0c;获取多个实体的最大包围盒&#xff0c;用红色线表示&#xff1a; 也可单独选圆的包围盒 部分代码如下&#xff1a; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using A…...

【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…...

你好,C++并发世界

C并发编程的主要目的是任务隔离和提高性能 是的&#xff0c;C并发编程的主要目的是任务隔离和提高性能。具体来说&#xff0c;可以总结为以下几点&#xff1a; 任务隔离&#xff1a;通过并发编程&#xff0c;程序可以将不同的任务或计算分隔开&#xff0c;这样可以防止它们之间…...

windows10 安装 达梦数据库DM8

一. 前期工作 下载 https://www.dameng.com/list_103.html 通过百度网盘分享的文件&#xff1a;达梦数据库 链接&#xff1a;https://pan.baidu.com/s/1mJcT3UiwojeWIhXpAwh-RA 提取码&#xff1a;jyzi 点我: 想要 解压 双击iso文件 二. 安装步骤 1 .双击setup.ext安装 …...

ntp交叉编译 ntpdate时间同步

NTP(Network Time Protocol,网络时间协议)是一种用于在计算机系统之间同步时钟的协议,广泛覆盖网络环境中,确保网络设备和计算机上的时间保持一致。NTP 是基于 UDP 协议工作在123号端口上,能够在不同的网络条件下达到数千级别的精度同步时间。 实现windows上位机作为ntp服…...

微服务实战系列之玩转Docker(十六)

导览 前言Q&#xff1a;基于容器云如何实现高可用的配置中心一、etcd入门1. 简介2. 特点 二、etcd实践1. 安装etcd镜像2. 创建etcd集群2.1 etcd-node12.2 etcd-node22.3 etcd-node3 3. 启动etcd集群 结语系列回顾 前言 Docker&#xff0c;一个宠儿&#xff0c;一个云原生领域的…...

Solana 代币 2022 — Transfer Hook

从零到英雄的 Solana 代币 2022 — Transfer Hook Token 2022 计划引入了几项令人兴奋的扩展&#xff0c;增强了铸造和代币账户的功能。在这些功能中&#xff0c;我个人最喜欢的是Transfer Hook &#xff08;转账钩子&#xff09; 。 想象时间 让我们戴上想象的帽子&#xf…...

网络爬虫中的反爬虫技术:突破限制,获取数据

&#xff0c;网络爬虫已成为获取大量网络数据的重要工具。然而&#xff0c;随着爬虫技术的发展&#xff0c;许多网站也开始采用各种反爬虫措施来保护自己的数据。作为爬虫开发者&#xff0c;我们需要不断更新我们的技术&#xff0c;以应对这些反爬虫措施。本文将详细介绍一些常…...

【ROS2】cv_bridge:ROS图像消息和OpenCV的cv::Mat格式转换库

1、简述 cv_bridge可以实现ROS图像消息(sensor_msgs::msg::Image)和OpenCV的cv::Mat格式的转换。 cv_bridge支持各种常见的图像编码格式,包括JPEG、PNG、BMP等。 2、互转 1)cv::Mat转sensor_msgs::Image cv::Mat image; sensor_msgs::ImagePtr pMsg = cv_bridge::CvIma…...

【Web.路由】——URL生成

前几篇文章介绍了路由的相关知识&#xff0c;包括原理&#xff0c;模板和约束。围绕的一个点就是URL&#xff0c;那么URL是如何生成的呢&#xff1f; 在 ASP.NET CORE应用程序中&#xff0c;使用了一个叫 LinkGenerator的链接生成器来生成URL的。 LinkGenerator是一个中间件组件…...

使用 Java 实现从搜索引擎批量下载图片

在进行一些数据收集、图像处理或研究工作时&#xff0c;我们可能需要从网络上批量下载高质量的图片。本文将介绍如何使用 Java 和 Jsoup 库&#xff0c;从搜索引擎中抓取图片&#xff0c;解析详情页并过滤出高质量图片。通过以下几个步骤&#xff0c;您可以自动化这个图片收集的…...

基于Matlab GUI的说话人识别测试平台

基于Matlab GUI的说话人识别测试平台 摘 要&#xff1a;为了克服在Matlab中语音处理工具箱的不足&#xff0c;设计出基于Matlab图形用户界面&#xff08;GUI&#xff09;的说话人识别测试平台。系统框架设计&#xff1a;特征参数采用美尔倒谱系数及差分美尔倒谱系数&#xff0c…...

Leetcode 热题100之二叉树2

1.二叉树的层序遍历 思路分析&#xff1a;层序遍历是逐层从左到右访问二叉树的所有节点&#xff0c;通常可以使用广度优先搜索&#xff08;BFS&#xff09;来实现。我们可以使用一个队列&#xff08;FIFO&#xff09;来存储每一层的节点&#xff0c;并逐层访问。 初始化队列&a…...

<项目代码>YOLOv8 煤矸石识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…...

GA/T1400视图库平台EasyCVR视频分析设备平台微信H5小程序:智能视频监控的新篇章

GA/T1400视图库平台EasyCVR是一款综合性的视频管理工具&#xff0c;它兼容Windows、Linux&#xff08;包括CentOS和Ubuntu&#xff09;以及国产操作系统。这个平台不仅能够接入多种协议&#xff0c;还能将不同格式的视频数据统一转换为标准化的视频流&#xff0c;通过无需插件的…...

LVM与磁盘配额

文章目录 LVM与磁盘配额1 LVM概述1.1 名词解释1.2 LVM优势 2 LVM相关命令2.1 创建逻辑卷过程2.2 对逻辑卷扩容 3 磁盘配额3.1 磁盘配额的特点3.2 磁盘配额的命令3.3 查看配额使用情况3.4 验证磁盘配额3.5 实验 LVM与磁盘配额 1 LVM概述 1.1 名词解释 LVM&#xff1a;logical…...

xmuoj [蒙德里安的梦想] 状压dp个人笔记

本题是状压dp经典题目&#xff0c;很多人都是通过这一题开始对状压dp有所了解。 在进行讲解之前&#xff0c;我们先通过几个问答大致了解状压dp。 一、问答 1. 问题&#xff1a;什么是状压dp? 回答&#xff1a;状压dp即为状态压缩动态规划&#xff0c;何为状态压缩&#x…...

ubuntu22安装搜狗输入法不能输入中文

关闭Wayland 在/etc/gdm3/custom.conf文件内&#xff0c;取消注释WaylandEnable cat /etc/gdm3/custom.conf | grep WaylandEnable WaylandEnablefalse 其它步骤参考搜狗官方教程 https://pinyin.sogou.com/linux/help.php...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...