[C++ Primer CH03]第3章 字符串、向量和数组(笔记)

时间序列聚类在股票市场分析中的实践与优化 时间序列聚类是一种面向动态行为建模的无监督学习方法,其核心在于通过语义感知的距离度量(如DTW)捕捉价格形态的相位弹性与结构相似性,而非依赖静态数值或标签驱动。相比K-Means等传统算法,它能有效缓解金融时序中普遍存在的噪声敏感、对齐失效与形态失真问题,从而提升聚类结果的市场可解释性与策略鲁棒性。该技术已广泛应用于市场状态识别、行业行为分群、异常交易监测等场景,并成为构建可验证量化分析框架的关键预处理层。本文聚焦A股真实行情数据,详解从原始OHLCV到可聚类时间序列的完整链路,涵盖DTW距离计算、层次聚类 阅读详情

小结:

string和vector是两种最重要的标准库类型。string对象是一个可变长的字符序列,vector对象是一组同类型对象的容器。

迭代器允许对容器中的对象进行间接访问,对于string对象和vector对象来说,可以通过迭代器访问元素或者在元素间移动。

数组和指向数组元素的指针在一个较低的层次上实现了与标准库类型string和vector类似的功能。一般来说,应该优先选用标准库提供的类型,之后再考虑C++语言内置的低层的替代品数组或指针。


笔记:

最好使用C++版本的C标准库头文件,C语言的头文件形如name.h,C++则将这些文件命名为cname。特别的,在名为cname的头文件中定义的名字从属于命名空间std。


注意检查下标的合法性,下标必须大于的等于0而小于字符串的size()的值。一种简便易行的方法是,总是设下标的类型为string::size_type,因为此类型是无符号数,可以确保下标不会小于0。此时,代码只需保证下标小于size()的值就可以了。


警告,某些编译器可能仍需以老式的声明语句来处理元素为vector的vector对象,如vector<vector<int> >。(两个> >之间有空格)


vector初始化,如果用的是圆括号,可以说提供的值是用来构造(construct)vector对象的。

如果用的是花括号,可以表述成我们想列表初始化(list initialize)该vector对象。


对vector对象来说,直接初始化的方式适用于三种情况:初始值已知且数量较少、初始值是另一个vector对象的副本、所有元素的初始值都一样。


所有标准库容器都可使用迭代器。


C++程序员习惯性地使用!=,其原因和他们更愿意使用迭代器而非下标的原因一样:因为这种编程风格在标准库提供的所有容器上都有效。


如果不清楚元素的确切个数,请使用vector。


内置的下标运算符所用的搜引值不是无符号类型,这一点与vector和string不一样。


尽管C++支持C风格字符串,但在C++程序中最好还是不要使用它们。


要使用范围for语句处理多为数组,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型。


FAQ(Frequently Asked Questions):

Q1:头文件为什么不应包含using声明?

A1:头文件的内容会拷贝到所有引用它的文件中去,如果头文件里有某个using声明,那么每个使用了该头文件的文件就都会有这个声明。对于某些程序来说,由于不经意间包含了一些名字,反而可能产生始料未及的名字冲突。

Q2:如何防止缓冲区溢出?
A2:因为只能对确知已存在的元素执行下标操作!所以通过下标访问不存在的元素的行为会导致缓冲区溢出。确保下标合法的一种有效手段就是尽可能使用范围for语句。

Q3:编译器发现不了的错误
A3:如果计算所得的指针超出了上述范围,(指针指向数组arr为元素的下一位置),编译器一般发现不了这个错误。
开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验(一) 阿里云推出国内首个集成“快思考”与“慢思考”能力的 Qwen3-8B 大语言模型,以80亿参数和 128K 上下文支持,重塑AI应用边界并助力开发者高效部署 阅读详情

相关推荐

操作系统原理:【优麒麟】linux内核添加系统调用

在底端添加如下代码。

Joyce_zz的博客 2709

掌握C++模板编程:Cpp-Primer-5th-Exercises第16章实战指南

C++模板编程是C++ Primer第5版第16章的核心内容,也是提升C++编程能力的关键技能。通过Cpp-Primer-5th-Exercises项目中的实战练习,你将系统掌握模板类、函数模板、模板特化等核心概念,轻松应对复杂的泛型编程挑战。 ## 为什么模板编程是C++开发者的必备技能 🚀 模板是C++实现泛型编程的基础,它允许你编写与类型无关的代码,大幅提高代码复用性和灵活性。在标准库

gitblog_00320的博客 935

全志D1s RISC-V开发板硬件设计与Linux启动全流程解析

RISC-V架构是当前国产嵌入式处理器演进的核心方向,其启动流程涵盖从BootROM、SPL到U-Boot及Linux内核的多级引导机制。理解该流程需掌握DDR初始化、设备树适配、电源时序控制等底层原理,技术价值在于构建可追溯、可调试、可量产的最小可行系统(MVS)。典型应用场景包括边缘AI推理终端、工业HMI和轻量级网关等对成本与开源性敏感的领域。本文以全志D1s平台为载体,深入剖析基于玄铁C906内核的RISC-V SoC在真实硬件上的启动验证、电源完整性设计与Linux全链路开源实践。

weixin_32306683的博客 356

快速上手Cpp-Primer-5th-Exercises:新手必备的C++练习指南 [特殊字符]

想要系统学习C++编程语言,但面对《C++ Primer》这本经典教材的练习题感到无从下手?别担心!Cpp-Primer-5th-Exercises项目为你提供了完整的练习解答,帮助你快速掌握C++编程的核心概念和技巧。这份终极指南将带你深入了解这个宝贵的C++学习资源,让你在编程学习道路上事半功倍! ## 📚 项目简介:你的C++学习好帮手 Cpp-Primer-5th-Exercises

gitblog_01075的博客 1073

使用moveit控制机械臂

位置设置:`target_pose.position.x = 0.12`, `target_pose.position.y = 0.41`, 和 `target_pose.position.z = 0.44` 分别设置了机械臂末端执行器的X, Y, 和 Z坐标。设定目标位置:`group.set_pose_target(target_pose)` 这一命令将之前定义的目标位置和姿态设置为当前机械臂组的目标,为接下来的路径规划做准备。在机械臂控制的过程中,设定精确的目标位置和姿态是实现精确操作的关键步骤。

realman_Rop的博客 3686

博图软件V15.1安装教程

博途软件安装

m0_46266496的博客 1万+

Node-RED 数据处理实战手册:JSON、XML、CSV 的互转与排错

Node-RED 的数据处理,主要靠核心解析器里的一组节点完成:JSON、XML、CSV(还有 HTML、YAML),它们能把 msg 里的字符串、对象和表格数据互相转换。这篇文章不按"技巧清单"罗列,而是跟着一条数据在流程里走完全程:怎么从字符串变成对象,怎么在 XML 和 CSV 之间互转,字段对不上或坏消息出现时怎么办,最后再看怎么提速。 ## 数据入口:三步把 JSON 字符串解析成对象

gitblog_00964的博客 1058

果蔬及菜品识别系统

果蔬及菜品识别系统

我的博客 2116

C++Primer第五版 ——— (ch3)课后习题参考答案

C++Primer第五版 ——— (ch3)课后习题参考答案练习 3.1练习 3.2练习 3.3练习 3.4练习 3.5练习 3.6练习 3.7练习3.8练习 3.9练习 3.10练习 3.11 练习 3.1 使用恰当的 using 声明重做 1.4.1节(第 11 页)和 2.6.2节(第 67 页)的练习。 using namespace std ;(将标准库声明)-------前面已使用了,这里不再重复。 练习 3.2 编写一段程序从标准输入中一次读入一整行,然后修改该程序使其一次读入一个词。

曾记否@ 2373

Python爬虫实战:中国土地市场网招拍挂数据抓取与分析

本文详细介绍了如何使用Python爬虫技术从中国土地市场网抓取土地招拍挂数据,并进行初步的数据分析与可视化。文章涵盖了爬虫的基本原理、反爬虫策略应对、数据清洗与存储、数据分析与可视化等多个方面,为土地市场研究者提供了一套完整的数据获取与分析解决方案。

2201_76125261的博客 684

FFmpeg入门详解之110:RTSP协议讲解

TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。正在上传…重新上传取消RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断(\r\n:10,13:0x0A,0x0D),包括消息类型、消息头、消息体和消息长。

福优学苑@音视频+流媒体 2528

如何快速预览 3D 模型:轻量级 3D 工具 F3D 三维查看器完整指南

F3D三维查看器是一款免费、开源的轻量级 3D 工具,支持 Windows、macOS 和 Linux 三个平台,只做一件事:把 3D 模型文件快速打开并实时预览。如果你经常需要查看 GLTF、STL 等模型文件,或者想在一分钟内确认模型的形状、材质和动画状态,它就是适合做 3D 模型预览的工具。设计师、开发者和内容创作者都适用,安装即用,不需要复杂配置。 ## 三步打开你的第一个 3D 模型

gitblog_00927的博客 1026

Python-增加b站视频播放量

如果条件允许的情况下,有代理API更好,每次请求url调用API也更方便。如果没有的话,也不用担心,网上本身也有着很多免费国内代理,不过代理是否可用需要自己花点时间去检测,检测方法笔者这里就不详述了,后面有时间的话会单独针对这一块做详细说明。在开始之前,需准备代理IP。总之,在每次请求url的时候,随机带入某个IP防止被平台检测,便于达到增加播放量预期。大致思路就是针对你的目标代理平台进行IP抓取,并存入到自己本地的IP代理池。本文是该专栏的第1篇,后面会持续更新对应平台干货知识,记得关注。

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 5209

Cpp-Primer-5th-Exercises项目揭秘:从基础语法到高级特性的完整路径

你是否正在学习C++编程语言,却被《C++ Primer》第五版中的复杂习题困扰?😅 别担心,Cpp-Primer-5th-Exercises项目为你提供了完整的习题解答指南!这个开源项目包含了《C++ Primer》第五版所有章节的习题解答,从基础语法到高级特性,为你搭建了一条清晰的学习路径。无论你是C++初学者还是希望巩固知识的开发者,这个项目都是你学习路上的得力助手。 ## 📚 项目概

gitblog_00578的博客 845

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TeamAI 自动同步揭秘:AI 会话如何静默获取团队最新资源的完整指南

TeamAI 是一款开源的 AI 团队资源管理 CLI 工具(teamai-cli),它的自动同步机制可以让 Claude Code、Codex、Cursor 等 AI 助手在**每次会话启动时静默拉取团队最新的技能、规则与知识**,全程无需人工干预。本文带你彻底搞懂这套机制背后的原理。✨ ## 什么是 TeamAI 自动同步? 想象这样一个场景:管理员更新了团队的编码规则,昨天还有效的技能今

gitblog_01132的博客 992

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Lucky零代码对接点灯科技与巴法云:语音助手唤醒关机设备

喊一句"唤醒电脑",客厅主机就嗡地启动,不用拔插电源线,不用写一行代码。这是在 Lucky 这款软硬路由公网神器里花 5 分钟配置,对接点灯科技或巴法云,就能让语音助手替你开关设备的体验。 ## 场景速览 连上之后你能做到: - 说一句"把电脑叫醒",休眠的主机自动开机 - 手机在平台 App 里远程下发指令,设备状态实时同步 - 设备不在同一局域网,也能通过中继客户端唤醒 ## 原理一张

gitblog_00456的博客 376

C++ Primer第5版习题解答完全指南:如何高效掌握C++编程基础 [特殊字符]

欢迎来到C++ Primer第5版习题解答的终极指南!如果你正在学习C++编程,这本经典教材的习题解答资源将成为你编程之旅的最佳伙伴。C++ Primer第5版习题解答项目提供了完整的C++ Primer第5版所有章节习题的详细解答,帮助学习者快速掌握C++编程基础知识。 ## 项目概述与核心价值 C++ Primer第5版习题解答是一个完整的开源解决方案集合,涵盖了从入门到高级的所有C++编

gitblog_00226的博客 272

C++ Primer ch3 指针和数组

1. 使用数组的时候,编译器一般会把它转换成指针。2. auto与decltype在分析数组类型时的区别:int a[] = { 1,2,3 }; auto b = a; // 得到的是指针类型int (*p)[3] decltype(a) c; // 得到的是数组类型int [3]3. C++11标准库函数begin()和end() 接受数组作为参数 定义在iterator头文

Ray的博客 255

Natron Charcoal 滤镜节点详解:参数、输入端口与自动文档生成机制

本文以 Natron 官方文档中的 Charcoal 节点参考页(`Documentation/source/plugins/net.fxarena.openfx.Charcoal.rst`)为主体,完整讲解该节点的功能定位、输入端口、全部控制参数及其默认值;同时结合仓库源码,说明这份“看起来手写”的插件文档实际上是如何由 Natron 自身的文档生成流水线自动产出的,帮助你在阅读 Natron

gitblog_00062的博客 625

《C++ Primer Plus 第六版》学习记录 CH1-CH4

《C++ Primer Plus 第六版》学习记录

zhuyyyyy的博客 296

MCP SEP-2484 解读:以一致性测试(Conformance Tests)作为规范提案进入 Final 状态的硬性门槛

本文以 Model Context Protocol 规范仓库中的 [SEP-2484](https://link.gitcode.com/i/9973df74940664d1fbfee90a0a357365) 为骨架,系统讲解 MCP 社区如何通过"一致性测试 + 可追溯性文件(traceability file)"机制,把规范的英文散文与 SDK 的可执行实现对齐。读完本文,你将掌握:哪些 S

gitblog_01000的博客 1072

C++ Primer Ch3习题代码

3.16 编写一段程序,把练习3.13中vector对象的容量和具体内容输出出来。检验你之前的回答是否正确,如果不对,重新学习3.3.1节直到弄明白错在何处。 #include <iostream> #include <vector> #include <string> using std::vector; using namespace std; int main() { vector<int> v1; vector<int>

rrrrrr89098087的博客 464

《C++Primer 5e》学习笔记(2):字符串、向量和数组

1.作用域操作符(::)的含义:编译器应从操作符左侧名字所示的作用域中寻找右侧那个名字。当左侧名字为空时即为全局变量。 2.对于using声明:每个名字都需要有独立的using声明,且头文件中不应包含using声明。 3.标准库类型string(string是一个类)需要有头文件#include 和命名空间using std::string; 4.getline(is,s)函数的

AC_Gibson的专栏 939

C++ Primer 5 CH3 字符串、向量和数组

3.1 命名空间的 using 声明 使用 using 声明:使用命名空间中的成员。 头文件不应包含 using 声明:头文件的内容会拷贝到引用它的文件中去,可能产生名字冲突。 3.2 标准库类型 string 初始化 string 对象 使用等号,拷贝初始化;不使用等号,直接初始化。 string 操作 读取 string string s1,s2; cin >> s1 ...

weixin_30399871的博客 89

Thorium浏览器四大平台安装指南,避坑一步到位

浏览器开十几个标签页风扇狂转、4K HEVC 还掉帧,可能需要 Thorium 这款高性能 Chromium 浏览器了。它把 LTO、PGO 等编译优化全开,按 CPU 指令集档位单独打包,让硬件跑在更高档位。下面走一遍 Windows、macOS、Linux、Android 四平台的选包、安装与验证流程。 ## 它是什么,凭什么更快 Thorium 的名字取自元素周期表 90 号元素钍。它始

gitblog_00783的博客 451

C++ Primer 第4版习题解答与源码:从基础到实战的完整学习指南

C++作为一门经典的编程语言,其核心在于对内存管理、面向对象和泛型编程的深刻理解。学习C++通常从掌握基础语法和标准库开始,通过系统练习来巩固概念、理解底层原理。习题解答不仅是验证答案的工具,更是理解题目设计意图、培养良好编程习惯的桥梁。对于《C++ Primer》这类经典教材,一份高质量的习题解答能显著提升学习效率,帮助开发者跨越从理论到实践的鸿沟。在实际应用中,通过对比分析、调试和代码重构,可以深入理解动态内存管理、类设计、STL容器等关键概念,最终将知识融会贯通,应用于文本处理、自定义数据结构等实际项

weixin_33858485的博客 460

C++Primer第五版 ——— (ch1)课后习题参考答案

C++Primer第五版 ——— (ch1)课后习题参考答案练习 1.3练习 1.4练习1.5练习1.6练习1.7练习1.8练习1.9练习1.10练习1.11练习1.12练习1.14练习1.16练习1.18练习1.20 练习 1.3 编写程序,在标准输出上打印Hello, World。 #include <iostream> using namespace std; int main() { char arr[10] = { 0 }; char arr0[10] = { 0 }; ch

曾记否@ 1706
上一篇: [C++ Primer CH02]第2章 变量和基本类型(笔记)
下一篇: [C++ Primer CH04]第4章 表达式(笔记)
xy_cpp
博客等级 码龄10年 119粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值