c++入门教程7:增删改查

【C++配置yaml】yaml-cpp使用 》》》 阅读详情

本文描述了c++数组的增删改查。增删改查是数组的基础应用,是新手必不可少的技术。若没学过数组,见《c++入门教程6:一维数组即其应用》。一篇不是那么正经的教程。


1. 增

  • 增指的是在数组中任意位置插入一个数
    例如若我们想在 a[10]={0,1,2,3,4,5}a[10]=\{0,1,2,3,4,5\}a[10]={0,1,2,3,4,5} 中第 sss 个位置插入一个6。
    那么我们的数组原本是
idx0123456…
val01234500

现在,假设我们要在下标为3的位置插入6,那么我们就要吧数组变成这样

idx0123456…
val01263450

你会发现我们其实就在把第 sss 到第 nnn 个位置的元素都往后移一位,再把 sss 的元素赋值为要替换的数字。
即

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[10]={0,1,2,3,4,5};
	int s=3,n=5,x=6;
	for (int i=n+1;i>=s;i--)
	{
		a[i]=a[i-1];
	} 
	a[s]=x;
	n+=1;
	for (int i=1;i<=n;i++)
	{
		cout<<a[i]<<" "; 
	}
	return 0;
}

2. 删

  • 同理删就是指删除数组中任意位置的数
    即
idx0123456…
val01234500

s=3s=3s=3
⇓\huge\Downarrow⇓

idx0123456…
val01245000

也就是从 s+1s+1s+1 开始,往前移一位。即

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[10]={0,1,2,3,4,5};
	int s=3,n=5;
	for (int i=s;i<n;i++)
	{
		a[i]=a[i+1];
	} 
	a[n]=0;
	n-=1;
	for (int i=1;i<=n;i++)
	{
		cout<<a[i]<<" "; 
	}
	return 0;
}

3. 改

  • 改指的是把任意一个数组中的数替换成另一个数。

例如将下标为 sss 的数替换为 6
假设 s=3s=3s=3 。即

idx0123456…
val01234500

⇓\huge\Downarrow⇓

idx0123456…
val01264500

即

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[10]={0,1,2,3,4,5};
	int s=3,n=5,x=6;
	a[s]=x;
	for (int i=1;i<=n;i++)
	{
		cout<<a[i]<<" "; 
	}
	return 0;
}

4. 查

  • 即在数列中找到一个数所在的位置。
    这里分枚举查找和二分查找(后续分治算法的基础)

枚举查找:

这个很简单,就是一个一个找,这里不说别的,直接贴代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[10]={0,1,2,3,4,5};
	int s=3,n=5,num=3,ans; 
	for (int i=1;i<=s;i++)
	{
		if (a[i]==num)
		{
			ans=i;
		}
	} 
	cout<<ans;
	return 0;
}

二分查找:

在某些情况下正常查找会 TLETLETLE ((( 超时 ))) 。 就比如在1~100里查找 97 ,正常循环枚举要找 97 次才能找到,但如果每次按这个策略

  • 试中间值。
  • 若找到了,那么恭喜你。
  • 若你要找的数比中间值大
    那么说明答案在中间值的右边。
    于是你现在可以对右侧执行此流程
  • 若你要找的数比中间值小
    那么说明答案在中间值的左边。
    于是你现在可以对左侧执行此流程

那么我们来看看,
第一次找到 mid=(1+100)/2=50,97>midmid=(1+100)/2=50, 97>midmid=(1+100)/2=50,97>mid,
第二次 mid=(51+100)/2=75,97>midmid=(51+100)/2=75,97>midmid=(51+100)/2=75,97>mid,
第三次 mid=(76+100)/2=88,97>midmid=(76+100)/2=88,97>midmid=(76+100)/2=88,97>mid,
第四次 mid=(89+100)/2=94,97>midmid=(89+100)/2=94,97>midmid=(89+100)/2=94,97>mid,
第五次 mid=(95+100)/2=97,97=midmid=(95+100)/2=97,97=midmid=(95+100)/2=97,97=mid
找到了。只用了5次,相比于97次是不是少了很多。
现在我按照这个原理贴个代码

#include<iostream>
using namespace std;
int main(){
    int a[10]={0,2,4,6,8,10,12,14};
    int n=7;
    int num=10;
    int l=1,r=n;
    int ans=-1;
    while(l<=r)
    {
        int mid=(l+r)/2;
        if(a[mid]==num)
        {
            ans=mid;
            break;
        }
        if(a[mid]<num)
        {
            l=mid+1;
        }
        else
        {
            r=mid-1;
        }
    }
    cout<<ans;
    return 0;
}

好了那么今天的增删改查我就讲完了,本文到这里也结束了,感谢大家的浏览,请点个赞以示支持。

【数据库】“SQLite”+“DEV-CPP”实现C/C++嵌入式编程操作数据库 正如题目所言,最近笔者需要完成一个的任务,要求使用编程语言,由于笔者用不习惯系列软件,遂选用作为开发工具,由于之前没有相关经验,踩了许多坑,特此记录SQLite+DEV-CPP实现C/C++嵌入式编程操作数据库过程。... 阅读详情

相关推荐

详解C/C++ 通过SQLiteSDK增删改查

详解C/C++ 通过SQLiteSDK增删改查

FuncPlotCalc 1158

yaml-cpp 介绍

YAML是专门用来写配置文件的语言,非常简洁和强大,比 JSON和xml格式要方便很多。YAML语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。它的基本语法规则如下YAML支持的数据结构有三种。

人无远虑,必有近忧 1万+

用Python、Java、C++三种方式连接Mysql数据库并完成增删改查

导览前言Python准备工作连接数据库创建连接获取游标执行sql关闭连接增删改查Java准备工作连接数据库加载驱动创建连接创建statment对象和结果集增删改查增删改查询关闭资源 前言 MySql作为目前较为流行的关系型数据库,经常会被使用。在不同语言框架下,对于数据库的连接与消息交互也是不同的,本篇文章将讲述Python、Java两种种不同语言框架连接数据库,并实现增删改查。 Python 准备工作 Python作为目前较为热门的脚本语言,拥有着大量的第三方库使用,因此Python的准备工作十分简单,只

Mr_Dis的博客 1772

c++文件增删改查信息

用来自我加强练习之后增加–优化封装一个文件类自我记录一下。

weixin_41725706的博客 647

PHP7使用 MongoDB\Driver\Manager 类实现简单的增删改查操作

PHP7使用 MongoDB\Driver\Manager 类实现简单的增删改查操作 MongoDB 是一个由 C++ 语言编写的,基于分布式文件存储的数据库。官方号称是“现代应用程序中最流行的数据库”(The most popular database for modern apps)。 今天,我们 PHP7 使用 MongoDB\Driver\Manager 类来演示一下简单的增删改查操作。 查看 MongoDB 扩展文档,主要有一下几组类: MongoDB\Driver // MongoDB驱动类

我的开发博客(公众号:Web后端技术) 2333

C++实现数据库基本操作:增删改查源码解析

数据库是IT行业的基石,它负责存储、管理和检索数据。在本章中,我们将首先介绍数据库的基本概念,包括数据模型、关系型数据库与非关系型数据库的区别等。这些基础知识是后续章节深入探讨数据库操作和优化的前提。在C++中,多种第三方数据库库提供了与不同数据库系统交互的能力。选择合适的库是构建高效、稳定数据库访问层的关键。常见的第三方数据库库包括:: 专为MySQL设计的官方C++数据库连接器,支持最新的MySQL服务器特性。SQLite。

weixin_42522857的博客 982

【c++】列表的增删改查

C++ 标准库提供了多种容器,用于不同的需求和使用场景。

qq_44691564的博客 976

FPGA 上的 YOLOv8 实时目标检测:从模型优化到硬件加速全解析

本文全面解析了将YOLOv8目标检测模型部署到FPGA进行硬件加速的完整流程。通过模型裁剪、混合精度量化等优化手段,结合HLS设计专用计算引擎与数据流,实现了高能效比的实时推理。文章深入探讨了软硬协同部署、性能调试与优化技巧,为追求极致实时性与低功耗的边缘AI应用提供了从算法到硬件的实战指南。

weixin_29031161的博客 606

C++数据库编程 MySQL Connecttor C++增删改查

文章目录1. Connector c++连接数据库2. 环境配置3. Connector c++插入数据4. Connector c++查询数据5. Connector c++修改数据6. Connector c++删除数据7. 示例代码 1. Connector c++连接数据库 下载 MySQL Connector C++头文件与库 下载 Boost头文件与库 使用 get_mysql_driver_instance0获取驱动实例 使用 connecto方法连接数据库 2. 环境配置

超级大洋葱的博客 3581

LinuxCNC 源码解析:从界面开发到硬件交互的实战指南

本文深入解析LinuxCNC源码架构,从用户界面开发到硬件交互的实战指南。涵盖GTK与Tkinter界面开发、HAL硬件抽象层、G代码解析器改造及运动控制核心等关键模块,提供定制化开发技巧与性能优化方案,助力开发者高效掌握数控系统开发。

weixin_27066963的博客 190

79.ScottPlot的MVVM实现 C#例子 WPF例子

在你的 WPF 窗口的 XAML 文件中,定义一个,并将其Content属性绑定到 ViewModel 中的属性。这样可以将WpfPlot控件动态绑定到 ViewModel。

S13461120713的博客 2571

C++快速实现简易增删改查系统

C++快速实现简易增删改查系统 #include<iostream> //#include<algorithm> //#include<functional> #include<list> #include<string> using namespace std; struct info { string name; int age;...

weixin_44795839的博客 5353

从零理解域随机化:通过Isaac Lab的events.py掌握Sim-to-Real关键技术

本文深入解析域随机化技术如何通过Isaac Lab的events.py实现Sim-to-Real迁移,提升机器人策略在真实世界的鲁棒性。从刚体属性到环境条件的系统级随机化,详细介绍了工程实践中的关键参数配置与调试技巧,帮助开发者有效缩小仿真与现实的差距。

weixin_29062613的博客 260

windows c++ (7) yaml-cpp vs2019编译

遇到__declspec(dllimport) const YAML::BadSubscript::`vftable’" YAML 编译+使用

勤又氪猿的博客 681

四参数与七参数坐标转换含义及区别

一.前言 不同坐标系,其椭球体的长半径,短半径和扁率是不同的。比如我们常用的四种坐标系北京54、西安80、WGS84、CGCS2000所对应的椭球体,它们的椭球体参数就各不相同。而不同空间直角坐标系之间的转换一般通过七参数或者四参数来实现坐标转换。 二.四参数转换 两个不同的二维平面直角坐标系之间转换通常使用四参数模型,四参数适合小范围测区的空间坐标转换,相对于七参数转换的优势在于只需要2个公共已知点就能进行转换,操作简单。 在该模型中有四个未知参数,即: (1)两个坐标平...

尘海折柳的博客 1万+

从指令到坐标:深度解析307系列基站定位的AT指令实战与排错

本文深度解析了ML307系列模组基站定位的AT指令实战应用与排错方法。重点剖析了AT+MLBSCFG和AT+MLBSLOC两条核心指令的配置、执行流程及异步响应机制,并针对高德与OneOs两种主流定位服务提供了完整的配置指南。文章结合常见错误码(如126、127)和硬件注意事项,分享了确保定位成功的实战经验与稳健的程序框架。

weixin_29057695的博客 488

【C++游记】Vector的使用和模拟实现

构造函数声明接口说明vector()无参数构造构造并初始化n个val拷贝构造使用迭代器进行初始化构造今日C++到这里就结束啦,如果觉得文章还不错的话,可以三连支持一下。感兴趣的宝子们欢迎持续订阅小枫の主页还有更多生动有趣的文章,欢迎宝子们去点评鸭~C++的学习很陡,时而巨难时而巨简单,希望宝子们和小枫一起坚持下去​。

枫の大一分享 1839

UE5接入在线直播视频源,如hls(m3u8)格式

UE5接入在线直播视频源

专注GIS开发 9501

C++ 关于数组的增删改查

//用数组实现增删改的话,对于增加 数组长度加一,和删除 数组长度减一 //可以用指针实现动态申请和缩容 //也可以用vector char b[] = {'a','a','b','c','a'}; cout<<"sizeof(b)"<<sizeof(b)<<endl; cout<<"b[5]"<<b[5]; b[4]...

WGS. 4639

十一、增强现实

那都是n年前的老版本了,新版本完全没有这个问题,我就是纠结这个问题,搭建若干环境,又是vmware虚拟机,又是msys2,又是anaconda,又是找机器,折腾了几天,结果通通不是。以一张实际卡片为锚点,通过笔记本的摄像头,在显示器上将一个计算机内的3d物体显示在卡片上,类似于电影上看到的那种全息投影技术;如果你是想在windows环境下开发linux运行程序,那么CygWin/gcc是你的不二之选。而如果你想开发的是windows运行程序,并且追求速度,那么二者相比而言,MinGW是更好的选择。

3189

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【C/C++】C++ Vector容器核心操作指南:增删改查全面解析

Vector作为C++中最核心的容器之一,其灵活性和易用性使其成为开发者的首选容器。通过合理使用增删改查接口,结合性能优化技巧,可以充分发挥vector的优势。

左手の明天的博客 1598

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MySQL学习(7)-C++增删改查记录(CRUD)

研究好CRUD,软件中使用MySQL就轻轻松松~

Copperxcx的博客 1548

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【数据结构与算法】一文写明数组的增删改查(c,cpp,java)

增删改查,是一种数据结构中的基本操作,即增加(Add)、删除(Delete)、修改(Modify)和查询(Search)数组中的元素。数组是一种非常重要的数据结构,常常被用来存储一系列相同类型的元素,无论是编程还是算法都离不开它的存在。首先,我们来说说增加吧!在数组中增加元素分为头部、中间和尾部。在这三个部位的插入代码并不相同,而且还要处理游标和边界等情况。在末尾添加一个新元素,这个操作很简单,只需要将新元素放入数组的最后一个位置即可。但是在中间和开头添加新元素,就得把数组后面的元素整体右移。

染落林间色的博客 1570

C++与Qt实现MySQL数据库的增删改查

头文件 MySQL数据库的安装与环境配置,网上大把,可参考: https://www.cnblogs.com/xtu-wlf1212/p/8764015.html 头文件包含: #include <QtSql/qsql.h> #include <QtSql/qsqldatabase.h> #include <QtSql/qsqlquery.h> #include...

听风雨 7059

『MySQL』手把手教你用 C++ 操作 MySQL:连接、增删改查与内存管理全流程

本文详细介绍了在 Linux 环境下,如何使用 C++ (C-API) 连接并操作 MySQL 数据库。文章涵盖了从环境配置、CMake 编译、数据库连接,到执行增删改查(CRUD)及处理查询结果集的完整流程。同时,针对中文乱码和内存管理等常见问题提供了解决方案,并附带完整的代码示例,适合 C++ 开发者快速上手数据库开发。

小侯宝的博客 1346

开源 C++ JSON 库 sonic-cpp解析性能为 rapidjson 的 2.5 倍

sonic-cpp 是由字节跳动 STE 团队和服务框架团队共同研发的一款面向 C++ 语言的高效 JSON 库,极致地利用当前 CPU 硬件特性与向量化编程,大幅提高了序列化反序列化性能,解析性能为 rapidjson 的 2.5 倍。 sonic-cpp 在字节内部上线以来, 已为抖音、今日头条等核心业务,累计节省了数十万 CPU 核心。近日,我们正式对外开源 sonic-cpp,希望能够帮助更多开发者,欢迎大家 star、fork。Github:https://github.com/bytedance

u012181546的博客 3004
上一篇: c++高阶冷门算法之折半搜索
下一篇: c++头文件列表
user_4
博客等级 码龄114天 89粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值