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> // 总结:按照书写依次往下,先看 iostream 再看 cxxx 最后 xxx.husing namespace std; // 本质:自定义作用域,作用域就在该命名空间内部。…...
[linux驱动开发--环境搭建] qemu-9.1+linux-kernel-6.11
本文档模拟vexpress-a9开发板,作为铁头娃,要学就学最新的包 已经上传到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#二次开发入门)
如下图所示,获取多个实体的最大包围盒,用红色线表示: 也可单独选圆的包围盒 部分代码如下: using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using A…...
【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?
👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…...
你好,C++并发世界
C并发编程的主要目的是任务隔离和提高性能 是的,C并发编程的主要目的是任务隔离和提高性能。具体来说,可以总结为以下几点: 任务隔离:通过并发编程,程序可以将不同的任务或计算分隔开,这样可以防止它们之间…...
windows10 安装 达梦数据库DM8
一. 前期工作 下载 https://www.dameng.com/list_103.html 通过百度网盘分享的文件:达梦数据库 链接:https://pan.baidu.com/s/1mJcT3UiwojeWIhXpAwh-RA 提取码:jyzi 点我: 想要 解压 双击iso文件 二. 安装步骤 1 .双击setup.ext安装 …...
ntp交叉编译 ntpdate时间同步
NTP(Network Time Protocol,网络时间协议)是一种用于在计算机系统之间同步时钟的协议,广泛覆盖网络环境中,确保网络设备和计算机上的时间保持一致。NTP 是基于 UDP 协议工作在123号端口上,能够在不同的网络条件下达到数千级别的精度同步时间。 实现windows上位机作为ntp服…...
微服务实战系列之玩转Docker(十六)
导览 前言Q:基于容器云如何实现高可用的配置中心一、etcd入门1. 简介2. 特点 二、etcd实践1. 安装etcd镜像2. 创建etcd集群2.1 etcd-node12.2 etcd-node22.3 etcd-node3 3. 启动etcd集群 结语系列回顾 前言 Docker,一个宠儿,一个云原生领域的…...
Solana 代币 2022 — Transfer Hook
从零到英雄的 Solana 代币 2022 — Transfer Hook Token 2022 计划引入了几项令人兴奋的扩展,增强了铸造和代币账户的功能。在这些功能中,我个人最喜欢的是Transfer Hook (转账钩子) 。 想象时间 让我们戴上想象的帽子…...
网络爬虫中的反爬虫技术:突破限制,获取数据
,网络爬虫已成为获取大量网络数据的重要工具。然而,随着爬虫技术的发展,许多网站也开始采用各种反爬虫措施来保护自己的数据。作为爬虫开发者,我们需要不断更新我们的技术,以应对这些反爬虫措施。本文将详细介绍一些常…...
【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生成
前几篇文章介绍了路由的相关知识,包括原理,模板和约束。围绕的一个点就是URL,那么URL是如何生成的呢? 在 ASP.NET CORE应用程序中,使用了一个叫 LinkGenerator的链接生成器来生成URL的。 LinkGenerator是一个中间件组件…...
使用 Java 实现从搜索引擎批量下载图片
在进行一些数据收集、图像处理或研究工作时,我们可能需要从网络上批量下载高质量的图片。本文将介绍如何使用 Java 和 Jsoup 库,从搜索引擎中抓取图片,解析详情页并过滤出高质量图片。通过以下几个步骤,您可以自动化这个图片收集的…...
基于Matlab GUI的说话人识别测试平台
基于Matlab GUI的说话人识别测试平台 摘 要:为了克服在Matlab中语音处理工具箱的不足,设计出基于Matlab图形用户界面(GUI)的说话人识别测试平台。系统框架设计:特征参数采用美尔倒谱系数及差分美尔倒谱系数,…...
Leetcode 热题100之二叉树2
1.二叉树的层序遍历 思路分析:层序遍历是逐层从左到右访问二叉树的所有节点,通常可以使用广度优先搜索(BFS)来实现。我们可以使用一个队列(FIFO)来存储每一层的节点,并逐层访问。 初始化队列&a…...
<项目代码>YOLOv8 煤矸石识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
GA/T1400视图库平台EasyCVR视频分析设备平台微信H5小程序:智能视频监控的新篇章
GA/T1400视图库平台EasyCVR是一款综合性的视频管理工具,它兼容Windows、Linux(包括CentOS和Ubuntu)以及国产操作系统。这个平台不仅能够接入多种协议,还能将不同格式的视频数据统一转换为标准化的视频流,通过无需插件的…...
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:logical…...
xmuoj [蒙德里安的梦想] 状压dp个人笔记
本题是状压dp经典题目,很多人都是通过这一题开始对状压dp有所了解。 在进行讲解之前,我们先通过几个问答大致了解状压dp。 一、问答 1. 问题:什么是状压dp? 回答:状压dp即为状态压缩动态规划,何为状态压缩&#x…...
ubuntu22安装搜狗输入法不能输入中文
关闭Wayland 在/etc/gdm3/custom.conf文件内,取消注释WaylandEnable cat /etc/gdm3/custom.conf | grep WaylandEnable WaylandEnablefalse 其它步骤参考搜狗官方教程 https://pinyin.sogou.com/linux/help.php...
PCIe调试避坑指南:当你的设备报Malformed TLP/UR/UC错误时,到底发生了什么?
PCIe调试实战:Malformed TLP/UR/UC错误排查全解析 当PCIe设备突然抛出Malformed TLP、UR(Unsupported Request)或UC(Unexpected Completion)错误时,很多工程师的第一反应往往是翻查协议手册。但真实调试场景…...
无王无帝定乾坤,来自田间第一人 海棠藏圣定山河
无王无帝定乾坤,来自田间第一人。 自古山河安定,世人皆归功于帝王镇守、朝堂统御, 仿佛万里乾坤唯有王权可镇、唯有霸业可安。 然则山河气运自有天道,世间安定自有公理, 强权只能维系一时疆域,正道方能稳固…...
终极免费AMD Ryzen硬件调试指南:掌握SMUDebugTool的完整使用技巧
终极免费AMD Ryzen硬件调试指南:掌握SMUDebugTool的完整使用技巧 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: …...
Windows远程桌面终极解锁指南:RDP Wrapper完整使用方案
Windows远程桌面终极解锁指南:RDP Wrapper完整使用方案 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows家庭版无法使用远程桌面而烦恼吗?是否曾经羡慕专业版用户能够享受多用户…...
从‘果冻屏’到‘瀑布屏’:OCA全贴合工艺如何悄悄改变了你的视觉体验?
从‘果冻屏’到‘瀑布屏’:OCA全贴合工艺如何悄悄改变了你的视觉体验? 还记得十年前那些让人抓狂的“果冻屏”吗?阳光下泛着彩虹纹,触控时总感觉隔着一层毛玻璃,甚至能清晰看到屏幕边缘积攒的灰尘。如今拿起任何一款旗…...
探索商业成功的奥秘:BABOK Guide v3深度解析
探索商业成功的奥秘:BABOK Guide v3深度解析 【下载地址】商业分析知识体系指南BABOKGuidev3 《商业分析知识体系指南(BABOK Guide v3)》是业界权威的商业分析专业标准,深受全球专业人士的认可与信赖。本指南经过严密的共识驱动开…...
网易云音乐NCM格式转换:三步解密法让音乐自由播放
网易云音乐NCM格式转换:三步解密法让音乐自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾在网易云音乐下载了心爱的歌曲,却发现只能在特定播放器中欣赏?当你想要在其他设备或播放…...
【VScode】STM32CubeMX+VScode开发编译下载STM32程序(基于Cmake工程)
【VScode】STM32CubeMXVScode开发STM32程序(基于Cmake工程) 文章目录准备工作安装上述软件(略)为VScode配置隔离开发环境-cubeMX为新环境安装插件1. 安装STM32CubelIDE for Visual Studiio Code插件2. 安装Cortex-Debug插件3. 安装…...
开源技能图谱引擎:构建个性化学习路径与人才发展系统
1. 项目概述:一个开源的技能图谱与学习路径引擎最近在整理个人技术栈和团队能力模型时,我一直在寻找一个能清晰映射技能关系、并据此规划学习路径的工具。市面上的商业产品要么太重、要么太封闭,直到我遇到了instavm/open-skills这个项目。简…...
用RP2350微控制器实现《黑客帝国》数字雨:嵌入式图形系统实战
1. 项目概述与核心价值如果你和我一样,对《黑客帝国》里那些从屏幕顶端倾泻而下的绿色字符雨有着难以言喻的情结,同时又是个喜欢动手鼓捣硬件的开发者,那么这个项目绝对能让你兴奋起来。它不是一个简单的屏幕保护程序,而是一个完整…...
