C++中常见函数
目录
stringstream ss(line);
为什么使用 stringstream
while(ss>>num){}
arr.push_back(num);
throw invalid_argument("");
数据结构的本质
内存管理
功能与易用性
vector动态数组也要初始化吗?
为什么要初始化?
如何初始化 std::vector?
方法 1:指定大小和默认值
方法 2:使用初始化列表
方法 3:动态调整大小
方法 4:逐个添加元素
什么时候不需要初始化?
getline(cin,line);
cin.clear();
实例代码解释
cin.ignore(10000, '\n');
num.assign(kind.size(), 0);
stringstream ss(line);
需要加头文件
#include <sstream>
将字符串 line
转换为一个可以像流(stream)一样操作的对象。这样可以方便地从字符串中提取数据,比如整数、浮点数等。
这里创建了一个 stringstream
对象 ss
,并将字符串 line
初始化到这个对象中
初始化后,ss
的内容就是 line
中的内容,并且可以通过流操作符(如 >>
)从中提取数据
为什么使用 stringstream
用户输入了一行由空格分隔的数字(如 "5 3 9 1 7 9"
),你可以使用 stringstream
将这些数字逐一提取出来,而不需要手动处理字符串分割
while(ss>>num){}
使用流操作符 >>
从 ss
中逐个提取整数
每次提取一个整数存入变量 num
提取完成后,自动跳过空格或其他分隔符
arr.push_back(num);
是 C++ 中 std::vector
容器的一个成员函数调用,用于向动态数组(vector
)的末尾添加一个元素
每次调用 push_back
,vector
的大小会自动增加 1
numeric_limits<int>::min()
可以理解成获取无穷小值
pair<int, int> result
pair<int, int>
表示创建一个 pair
对象,它可以容纳两个 int
类型的值
第一个 int
可以通过 .first
访问,第二个 int
可以通过 .second
访问
throw invalid_argument("");
表示传递给函数的参数无效,通常用于处理由于输入参数不符合要求而导致的错误
vector<int> arr;和int arr[];有什么区别?
数据结构的本质
vector<int> arr;
是动态数组容器
它的大小是动态的,可以根据需要自动调整大小
需要包含头文件#include <vector>
int arr[];
它的大小是固定的,在定义时必须指定长度,且无法动态扩展
不需要额外的头文件
内存管理
自动管理内存:std::vector
会在内部动态分配和释放内存
当元素数量超过当前容量时,vector
会自动重新分配更大的内存空间,并将旧数据复制到新空间中
int arr[];
手动管理内存:数组的内存是在栈上分配的,大小固定
如果需要动态分配内存,可以使用指针和 new
操作符,但需要手动释放内存(容易导致内存泄漏)
功能与易用性
vector<int> arr;
提供了许多内置方法,例如 push_back()
、pop_back()
、insert()
、erase()
等
支持迭代器操作,方便与 STL 算法(如 sort
、find
等)结合使用
int arr[];
仅支持基本的数组操作,没有内置方法
需要手动实现插入、删除等操作
vector动态数组也要初始化吗?
是的。如果你声明了一个 std::vector
但没有指定大小或初始值,它会创建一个空的动态数组(大小为 0)。此时,你不能直接通过索引访问元素,否则会导致未定义行为(undefined behavior)
std::vector<int> vec; // 创建一个空的 vector
vec[0] = 10; // 错误!vec 大小为 0,无法访问索引 0
为什么要初始化?
如果你计划通过索引访问 std::vector
中的元素(例如 vec[i]
),必须确保 std::vector
已经有足够的大小
如何初始化 std::vector
?
方法 1:指定大小和默认值
std::vector<int> vec(10, 0); // 创建大小为 10 的 vector,所有元素初始化为 0
方法 2:使用初始化列表
std::vector<int> vec = {1, 2, 3, 4, 5}; // 使用初始化列表创建 vector
方法 3:动态调整大小
先创建一个空的 std::vector
,然后使用 resize
方法调整大小并初始化
std::vector<int> vec;
vec.resize(10, 0); // 调整大小为 10,所有新元素初始化为 0
方法 4:逐个添加元素
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
什么时候不需要初始化?
如果你只使用 push_back
或其他动态添加元素的方法(而不通过索引访问),则不需要显式初始化
std::vector<int> vec; // 创建一个空的 vector
vec.push_back(10); // 动态添加元素
vec.push_back(20);
getline(cin,line);
从标准输入流 cin
中读取一行文本,并将其存储到字符串变量 line
中
它会读取输入流中的所有字符,直到遇到换行符(\n
)为止
cin
只能读取单个单词(以空格、制表符或换行符为分隔符),无法读取整行
getline
则可以读取整行,包括空格和其他特殊字符
cin.clear();
将输入流的错误标志位重置为无错误状态(即清除 failbit
、eofbit
等标志)
这样一来,输入流可以继续接受新的输入操作
cin.clear()
只会清除错误状态,但它不会清空输入缓冲区中的内容
实例代码解释
用户输入了一组整数,例如 1 2 3
用户输入了一个非整数值(例如字母 a
),导致 cin >> num
失败
此时,cin
会进入错误状态(failbit
被设置),并且输入缓冲区中可能还残留着未处理的字符(例如 a
)。如果不处理这些错误状态和缓冲区内容,程序可能会卡住或产生意外行为
cin.ignore(10000, '\n');
10000
:表示最多忽略 10000 个字符。这是一个足够大的数字,通常用来确保忽略掉缓冲区中的所有无效输入
'\n'
:表示以换行符为分隔符。当遇到换行符时,忽略操作会停止
忽略输入缓冲区中从当前光标位置开始的所有字符,直到遇到换行符 \n
为止
num.assign(kind.size(), 0);
assign
方法会清空当前 std::vector
的内容,并将其重新初始化为指定大小和初始值的新数组
将 num
的大小调整为与 kind
相同
所有元素都被初始化为 0
相关文章:
C++中常见函数
目录 stringstream ss(line); 为什么使用 stringstream while(ss>>num){} arr.push_back(num); numeric_limits ::min() pair result throw invalid_argument(""); vector arr;和int arr[];有什么区别? 数据结构的本质 内存管理 功能与易用…...
C++: 类型转换
C: 类型转换 (一)C语言中的类型转换volatile关键字 修饰const变量 (二)C四种强制类型转换1. static_cast2. reinterpret_cast3. const_cast4. dynamic_cast总结 (三)RTTI (一)C语言中的类型转换 在C语言中…...
Linux驱动开发进阶(五)- 系统调用
文章目录 1、前言2、阻塞与非阻塞IO2.1、阻塞方式2.2、非阻塞方式2.3、小结 3、异步IO3.1、poll3.2、select3.3、epoll3.4、poll和epoll示例比较3.5、异步通知 4、unlocked_ioctl5、sysfs_notify 1、前言 学习参考书籍以及本文涉及的示例程序:李山文的《Linux驱动开…...
深度解析:文件或目录损坏且无法读取的应对之道
引言 在数字化办公与数据存储日益普及的今天,我们时常会遭遇各种数据问题,其中“文件或目录损坏且无法读取”这一状况尤为令人头疼。无论是个人用户存储在电脑硬盘、移动硬盘、U盘等设备中的重要文档、照片、视频,还是企业服务器上的关键业务…...
农业股龙头公司有哪些?
农业股票的龙头公司通常是指在农业领域具有较高市场份额、较强品牌影响力和较好财务表现的企业。以下是一些国内外知名的农业龙头公司: 国内农业龙头公司 中国中化 - 作为国内最大的化肥生产企业之一,主要从事化肥、种子、农药等产品的生产和销售。丰乐…...
【正点原子】如何设置 ATK-DLMP135 开发板 eth0 的开机默认 IP 地址
开机就想让 eth0 乖乖用静态 IP?别再被 DHCP 抢走地址了! 三步教你彻底掌控 ATK-DLMP135 的网络启动配置,简单粗暴,实测有效! 正点原子STM32MP135开发板Linux核心板嵌入式ARM双千兆以太网CAN 1. 删除 dhcpcd 自动获取…...
pyenv-virtualenv(python 版本管理工具)
推荐参考(本人实测有用) 参考文章pyenv 和 pyenv-virtualenv 的安装、配置和使用(仅供参考) 参考文章 pyenvpyenv-virtualenv(仅供参考) pyenv (windows)安装 手动安装 git clone https://github.com/pye…...
Solr admin 更新文档
<add><doc><field name"id">1904451090351546368</field><field name"companyName" update"set">测试科技有限公司</field></doc> </add>...
华为交换机上配置流量策略根据IP限速
一、配置ACL匹配目标IP 目的:通过ACL识别需要限速的IP地址或网段。 # 进入系统视图 system-view # 创建基本ACL(例如ACL 3000) acl 3000 rule 5 permit ip source 192.168.1.10 0 # 匹配单个IP(源地址) # 或匹配…...
3D数据共享标准——GLB文件格式揭秘
GLB 文件格式:跨平台 3D 数据共享的标准 简介 在这个数据爆炸的时代,3D 数据因其直观、逼真的特点而得到广泛应用。然而,不同 3D 软件和平台之间的兼容性一直是一个难题。 为了解决这一问题,GLB 文件格式应运而生。作为一种标准…...
Java 大视界 -- 基于 Java 的大数据隐私保护在金融客户信息管理中的实践与挑战(178)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
基于springboot体育俱乐部预约管理系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,线上管理系统展现了其蓬勃生命力和广阔的前景。与此同时,在科…...
【HTML-CSS】
一、概念 1、HTML 2、CSS 二、入门 HTML 教程 | 菜鸟教程 1、构架 注: 1、标签不区分大小写 2、属性可以使用单引号,也可以使用双引号 3、语法结构不严谨,但建议好好写 2、常见标签和样式 (1)标题 <span>没…...
UI自动化基础(1)
1、pip install selenium4.3.0,最好指定版本安装,因为不同的版本可能会有一些兼容 性的问题。 2、pip uninstall urllib3 ,pip install urllib31.26.15 【执行版本安装】,goole是114.版本 3、装好浏览器,正确安装。最好…...
看雪 get_pwn3(2016 CCTF 中的 pwn3)
get_pwn3(2016 CCTF 中的 pwn3) 格式化字符串漏洞 get_pwn3(2016 CCTF 中的 pwn3) (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file pwn3 pwn3: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, …...
JAVA类和对象
实验目的: 1.掌握 Java 语言中类的定义、对象的创建、对象引用方法。 2.初步了解面向对象设计方法。 第一题: 设计一个自动铅笔类 AutoPencil,有 1 个属性 boolean penPoint(笔尖是否伸出),有 4 个函数&a…...
c#程序结构
C# 程序结构 一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declaration)一个 classClass 方法Class 属性一个 Main 方法语句(Statements)& 表达式(Expressions)注释 C# 文件的…...
988主材订购单
每一个大项,都可以添加多行小项, 小项里的品牌,型号规格,单位都是下来框,数据是后台传过来的。是一个多维数组。 <view style"width: 150rpx;color:#000;position:relative">备注:</vie…...
elementui table禁用全选,一次限制勾选一项。
1、设置属性:selection-change“handleSelectionChange” <el-table:data"taskList"ref"tableDataRefs"selection-change"handleSelectionChange":header-cell-class-name"hideAllCheckbox">function handleSelecti…...
Invalid Executable The executable contains bitcode
xcode 升级到16之后项目运行调试都没有问题,但是最后在上传到appstore的时候出现问题了 比如这种类似的错误,网上查了一下解决方法 解决方案: 执行一下指令删除该framework的bitcode xcrun bitcode_strip ${framework_path} -r -o ${framewo…...
【天梯赛】L2_005 集合相似度(C++)
L2-005 集合相似度 - 团体程序设计天梯赛-练习集 代码实现(C) #include <iostream> #include <vector> #include <unordered_set> #include <iomanip>// 计算两个集合的相似度 double cal(const std::unordered_set<int>…...
Java【多线程】(7)常见的锁策略
目录 1.前言 2.正文 2.1悲观锁和乐观锁 2.2重量级锁和轻量级锁 2.3挂起等待锁和自旋锁 2.4互斥锁与读写锁 2.5可重入锁与不可重入锁 2.6公平锁与不公平锁 2.7synchronized优化 2.7.1锁升级 2.7.2锁消除 2.7.3锁粗化 3.小结 1.前言 哈喽大家好,今天来给…...
Android Compose 中获取和使用 Context 的完整指南
在 Android Jetpack Compose 中,虽然大多数 UI 组件不再需要直接使用 Context,但有时你仍然需要访问它来执行一些 Android 平台特定的操作。以下是几种在 Compose 中获取和使用 Context 的方法: 1. 使用 LocalContext 这是 Compose 中最常用…...
车载通信基础 --- 解密公开密钥基础设施(PKI)
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁&am…...
深度强化学习基础 1:以狗狗学习握手为例
强化学习共同框架 在这个狗狗学习握手的场景中,强化学习的各个要素可以这样理解: 状态s(state): 狗狗所处的环境状况,比如主人伸出手掌的姿势、狗狗自身的姿势、周围的环境等。状态s描述了狗狗在特定时刻所感知到的环境信息。 动作a(action): 狗狗可以…...
【Kafka基础】topics命令行操作大全:高级命令解析(2)
1 强制删除主题 /export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-topics.sh --delete \--zookeeper 192.168.10.33:2181 \--topic mytopic \--if-exists 参数说明: --zookeeper:直接连接Zookeeper删除(旧版本方式)--if-exists&…...
【redis】简介及在springboot中的使用
redis简介 基本概念 Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 与MySQL数据库不…...
Windwos的DNS解析命令nslookup
nslookup 解析dns的命令 有两种使用方式,交互式&命令行方式。 交互式 C:\Users\Administrator>nslookup 默认服务器: UnKnown Address: fe80::52f7:edff:fe28:35de> www.baidu.com 服务器: UnKnown Address: fe80::52f7:edff:fe28:35de非权威应答:…...
Vue.js 实现下载模板和导入模板、数据比对功能核心实现。
在前端开发中,数据比对是一个常见需求,尤其在资产管理等场景中。本文将基于 Vue.js 和 Element UI,通过一个简化的代码示例,展示如何实现“新建比对”和“开始比对”功能的核心部分。 一、功能简介 我们将聚焦两个核心功能&…...
通过世界排名第一的免费开源ERP,构建富有弹性的智能供应链
概述 现行供应链模式的结构性弱点凸显了对整个行业进行重塑的必要性。正确策略和支持可以帮助您重塑供应链,降低成本,实现业务转型。开源智造(OSCG)所推出的Odoo免费开源ERP解决方案,将供应链转化为具有快速响应能力的…...
自动驾驶数据闭环中的MLOps实践:Kubernetes、Kubeflow与PyTorch的协同应用
目录 1. 引言 2. 系统架构与技术栈 2.1 Kubernetes:弹性可伸缩的计算资源池 2.2 Kubeflow:端到端的MLOps工作流 2.3 PyTorch分布式训练:高效的模型训练引擎 3. 增强型数据处理技术 3.1 联邦学习聚合 3.2 在线学习更新 3.3 角落案例挖…...
如何在Linux中更改主机名?修改主机最新方法
hostname是一个Linux操作系统的常用功能,允许识别服务器, 这可用于容易地确定两个服务器之间的差异。 除了服务器的个人识别,主机名与大多数网络进程一起使用,其他应用程序也可能依赖于此,本期将指导大家如何在Linux中…...
分盘,内网
分盘 查看创建分区 # 查看磁盘信息(确认目标磁盘,如/dev/sda) lsblkfdisk -l# 启动fdisk工具(需root权限) sudo fdisk /dev/sda# 步骤1:删除旧分区表(谨慎操作!) Comma…...
SQL122 删除索引
alter table examination_info drop index uniq_idx_exam_id; alter table examination_info drop index full_idx_tag; 描述 请删除examination_info表上的唯一索引uniq_idx_exam_id和全文索引full_idx_tag。 后台会通过 SHOW INDEX FROM examination_info 来对比输出结果。…...
【SQL】子查询详解(附例题)
子查询 子查询的表示形式为:(SELECT 语句),它是IN、EXISTS等运算符的运算数,它也出现于FROM子句和VALUES子句。包含子查询的查询叫做嵌套查询。嵌套查询分为相关嵌套查询和不想关嵌套查询 WHERE子句中的子查询 比较运算符 子查询的结果是…...
AI和传统命理的结合
deepseek的火热 也带来了AI命理学的爆火 1. 精准解析:AI加持,数据驱动 通过先进的人工智能算法,我们对海量的传统命理知识进行了深度学习和整合。无论是八字排盘、紫微斗数,还是风水布局、生肖运势,AI都能根据您的个…...
Java设计模式之抽象工厂模式:从入门到架构级实践
设计模式是构建高质量软件的基石,而抽象工厂模式作为创建型模式的代表,不仅解决了对象创建的问题,更在架构设计中扮演着关键角色。本文将从基础到高阶、从单机到分布式,全面剖析抽象工厂模式的应用场景与实战技巧。 一、从问题出发…...
摄像头模块对焦方式的类型
摄像头模块的对焦方式直接影响成像清晰度和使用场景适应性,不同技术各有其优缺点。以下是常见对焦方式及其原理、特点和应用场景的详细说明: 1. 固定对焦(Fixed Focus) 原理:镜头固定在特定距离(…...
九屏图分析法以手机为例
九屏图的两种视角 时间九屏图:关注系统的时间演化(过去、现在、未来),强调技术或产品的生命周期。空间九屏图:关注系统的层次结构(子系统、本系统、超系统࿰…...
【模板】前缀和
链接:【模板】前缀和 题目描述 给定一个长度为n的数组a1,a2,....ana_1, a_2,....a_na1,a2,....an. 接下来有q次查询, 每次查询有两个参数l, r. 对于每个询问, 请输出alal1....ara_la_{l1}....a_ralal1....ar 输入描述: 第一行包含两个整数n和q. 第…...
微信小程序多线程的使用
微信小程序的多线程主要通过 Worker 实现,用于处理复杂计算任务以避免阻塞主线程。以下是完整的使用指南和最佳实践: 一、Worker 核心机制 运行环境隔离 主线程与 Worker 线程内存不共享通信通过 postMessage 完成(数据拷贝而非共享ÿ…...
FPGA设计职位介绍|如何成为一名合格的数字前端设计工程师?
近年来FPGA行业持续升温,随着国产替代浪潮的加快推进,国家对可重构计算、边缘计算、自主可控等领域的扶持力度不断加大,FPGA作为灵活性高、可编程性强的重要芯片种类,在人工智能、通信、工业控制等应用中广受青睐。FPGA人才长期紧…...
Shell 基础
刷题: 思维导图: #include <stdio.h> // 手动定义32位有符号整数的范围 #define INT_MAX 2147483647 #define INT_MIN (-2147483647 - 1) int reverse(int x) { int rev 0; // 初始化反转后的数字为0 while (x ! 0) { // 当x不为0时ÿ…...
软件信息安全性测试如何进行?有哪些注意事项?
随着信息技术的高速发展,软件已经成为我们生活和工作中不可或缺的一部分。然而,随着软件产品的广泛普及,软件信息安全性问题也日益凸显,因此软件信息安全性测试必不可少。那么软件信息安全性测试应如何进行呢?在进行过程中又有哪…...
ragflow开启https访问:浏览器将自签证书添加到受信任的根证书颁发机构 ,当证书过期,还需要添加吗?
核心机制解析 信任链原理: 当您将自签名证书添加到"受信任的根证书颁发机构"后,系统会永久信任该证书的颁发者身份但证书本身的有效期和密钥匹配仍需验证证书更新的两种情况: 相同密钥续期:如果新证书使用相同的密钥对,浏览器通常会保持信任重新生成密钥:如果执…...
ragflow开启https访问:自签证书到期了,如何自动生成新证书
自动生成和更新自签名证书的方案 对于使用公网IP和自签名证书的RagFlow服务,要实现证书的自动生成和更新,可以采用以下方案: 方案一:使用脚本自动更新(推荐) 1. 创建自动更新脚本 在服务器上创建 ./docker/nginx/auto_renew_cert.sh 文件: #!/bin/bash# 证书路径 C…...
LLM面试题八
推荐算法工程师面试题 二分类的分类损失函数? 二分类的分类损失函数一般采用交叉熵(Cross Entropy)损失函数,即CE损失函数。二分类问题的CE损失函数可以写成:其中,y是真实标签,p是预测标签,取值为0或1。 …...
小行星轨道预测是怎么做的?从天文观测到 AI 模型的完整路径
目录 ☄️ 小行星轨道预测是怎么做的?从天文观测到 AI 模型的完整路径 🌌 一、什么是小行星轨道预测? 🔭 二、观测数据从哪里来? 🧮 三、经典动力学方法:数值积分 🤖 四、现代方…...
华为OD机试2025A卷 - 正整数到excel编号之间的转换(Java Python JS C++ C )
最新华为OD机试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 题目描述 用过 excel 的都知道excel的列编号是这样的: a b c … z aa ab ac … az ba bb bc … yz za zb zc … zz aaa aab aac … 分别代表以下编号: 1 2 3 … 26 27 28 29 … 52 53 54 55…...
2024年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析
2024年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激…...