【C++】 vector <string> 的超详细解析!!!

目录

一、前言

二、 vector <string>  的个人理解和总结

三、vector <string>  的初始化

四、vector <string> 的输入 \ 输出

 五、vector <string>  中的注意事项

 六、常考面试题

七、共勉 


一、前言

        在【C++】中,vector 是一个动态数组,它可以根据需要自动调整自身的大小。同样 vector<string> 表示一个由 string 组成的 vectorstring 是一个字符序列,可以理解为文本字符串。但是在平时刷 leetcode 的时候,还是搞不清楚 vector<string>的用法 ,所以通过查阅资料,将其记录下来。
       如果有老铁还不清楚 vector 的基本用法,可以看这篇文章:详解vector

二、 vector <string> 的个人理解和总结

      标准库类型 vector 表示对象的集合,其内所有的对象类型都相同。使用 vector 必须包含头文件(#include <vector>)。

      个人理解:vector 是一个类模板,编译器根据模板创建类或函数,vector<string> 就是根据模板创建了若干 string 对象,而 string 本身可以包含字符串,字符串可以视为若干个字符,即,vector<string> 可以视为一个a [ ][ ] 数组。可以使用输出数组的方式来输出vector<string> 对象内的内容。

三、vector <string> 的初始化

下面是如何创建 vector<string> 的一些例子: 

  1. 创建一个空的 vector<string>
     
    vector<string> vec1;
    
  2. 创建包含5个空字符串的 vector<string> 
     
    vector<string> vec2(5);
    
  3.  创建包含5个 "abc" 的 vector<string>
     
    vector<string> vec3(5, "abc");
    
  4. 使用初始化列表创建 vector<string> 
     
    vector<string> vec4 = {"abc", "def", "ghi"};
    

四、vector <string> 的输入 \ 输出

代码范例:从cin读入一组词,并输出这组词的大写,每个词一行。

  • 说明:按图所示的格式输入数据,并以Ctrl+Z结尾,回车出结果 
int main()
{string str;// 定义一个空的 wordvector<string> word;// 开始向 vector 动态数组中 输入字符串while (getline(cin,str)){word.push_back(str);      //push_back()用于添加元素到word的尾端}// 第一个 for表示 vector 中 有几个字符串for (int i = 0; i < word.size(); i++){// 第二个for表示  一个字符串中有几个字符for (int j = 0; j < word[i].length(); j++){// 将每一个字符转换为 大写字母word[i][j] = toupper(word[i][j]);}}// 输出动态数组  vector<string>for (int i = 0; i < word.size(); i++){cout << word[i] << endl;}return 0;
}

 五、vector <string> 中的注意事项

 在 vector<string> aa[0].size()a.size() 有什么区别?

 实例代码:

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{vector<string> a ={"aasd7777","bbasd","asdal","dasdas",/*第四个元素:"a"*/"adsajsadada","sda","dsa"};int b = a[0].size();//计算第1个位置上总共多长  vector数组从0开始存放第一个元素int c = a.size();//计算vector中总共多长int d = a[6].size();//计算第7个位置cout << a[3][2] << endl;//scout << a[4][4] << endl;//j//超过第四个元数的长度 报错  subscript out of the range cout << b<<endl;//8cout << c << endl;//7cout << d << endl;//3return 0;
}

 结论:

1、a[0].size 计算存放在 vector 中第一个元素有多长
2、a.size 计算存放了多少个元数在vector 中
3、可以将 vector<string> a 看作是二维数组
4、a[3][2]= s  a[4][4]= j
a[行][列] 
行->a.size()
列->a[某行].size()

 六、常考面试题

 题目:最长公共前缀
 链接:14. 最长公共前缀

方法一: 

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {// 表示字符串索引int j = 0;string Countstr="";// 进入无限循环while(1){// 以第一个字符串的 j位置为基准char c = strs[0][j];for(int i =0;i<strs.size();i++){// 不与基准相同或某一字符串结束if(strs[i][j]!=c || j==strs[i].size()){return Countstr;}}Countstr+=c;j++;}return Countstr;}
};

方法二: 

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {string result="";if(strs.empty()) return result;// 按照字典顺序排序sort(strs.begin(),strs.end());string start = strs.front();string en = strs.back();int size = min(start.size(),en.size());int len;for(len = 0;len<size;len++){if(start[len]!=en[len]){break;}}string res;res = start.substr(0,len);return res;}
};

七、共勉 

以下就是我对 vector <string> 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦

同时我还会继续更新对C++  vector 二维数组 的理解,请持续关注我哦!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xshell7连接ubuntu18.04

&#x1f3a1;导航小助手&#x1f3a1; 1.查看ubuntu IP2.开启openssh-server3.静态IP设置4.Xshell连接 1.查看ubuntu IP 输入下面命令查看IP ifconfig -a可以看到网卡是ens33&#xff0c;IP为192.168.3.180。 2.开启openssh-server 1、执行下句&#xff0c;下载SSH服务 s…

物联网学习2、MQTT 发布/订阅模式介绍

MQTT 发布/订阅模式 发布订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;它将发送消息的客户端&#xff08;发布者&#xff09;与接收消息的客户端&#xff08;订阅者&#xff09;解耦&#xff0c;使得两者不需要建立直接的联系也不…

Mac - Keychron K3 Pro 功能键改键 -via 改键配置 For Mac

前言 Keychron K3 Pro键盘连接Mac使用&#xff0c;顶部一排功能键&#xff0c;默认是Mac的多媒体功能键。F1&#xff5e;F12功能键&#xff0c;需要按&#xff1a;Fn F1&#xff5e;F12。 而在我的日常工作中&#xff0c;常用的是F1&#xff5e;F12&#xff0c;期望F1~F12功…

GWO-CNN-BiLSTM多输入回归预测|灰狼群算法优化的卷积-双向长短期神经网络|Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&…

超声波清洗机能洗哪些东西?适合洗眼镜超声波清洗机排行榜

在现代生活的忙碌节奏中&#xff0c;寻找高效而又便捷的清洁解决方案成为了众多家庭的追求。超声波清洗机&#xff0c;作为一种革新的清洁设备&#xff0c;以其深入细微、温和而高效的清洗方式&#xff0c;赢得了广泛的关注和好评。它能够操作简便地清洁各种物品&#xff0c;从…

《编程菜鸟学 Python 数据分析》让工作自动化起来!

随着我国企业数字化和信息化的深入&#xff0c;企业对办公自动化的效率和灵活性要求越来越高。Python作为一种开源的软件应用开发方式&#xff0c;通过提供强大丰富的库文件包&#xff0c;极大地简化了应用开发过程&#xff0c;降低了技术门槛。Python开发有哪些优势、挑战以及…

【A-006】基于SSH的新闻发布系统(含论文)

【A-006】基于SSH的新闻发布系统&#xff08;含论文&#xff09; 开发环境&#xff1a; Jdk7(8)Tomcat7(8)MySQLIntelliJ IDEA(Eclipse) 数据库&#xff1a; MySQL 技术&#xff1a; SpringStruts2HiberanteJSPJquery 适用于&#xff1a; 课程设计&#xff0c;毕业设计&…

SWM341系列应用(USB应用)

1、测SWM341的主机功能&#xff0c;需要注意&#xff1a; SWM341的Host功能只支持Full Speed通信&#xff0c;好多U盘和tf读卡器都只支持High Speed&#xff0c;341无法与之通信 另外&#xff0c;测SWM341 Host的HID_Mouse例程时&#xff0c;好多鼠标都是Low Speed的&#xf…

OpenAI 终于想起GPT Store付费计划

OpenAI 终于想起GPT Store付费计划。 开发者用GPT模型做出有价值的东西&#xff0c;OpenAI就会根据这个价值给他们支付费用。 OpenAI想通过这个方式激励开发者&#xff0c;让他们更积极地参与到GPT的生态系统建设中来。 目前&#xff0c;这个计划是在美国的开发者中进行测试…

【洛谷】P9240 [蓝桥杯 2023 省 B] 冶炼金属

题目链接 P9240 [蓝桥杯 2023 省 B] 冶炼金属 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 这道题可以用数学的方法去做&#xff0c;但是我想不到&#x1f607;有兴趣的可以去看看数学的题解 比较简单的思路就是二分查找&#xff0c;轻松简单不费脑&#xff0c;带你…

NOSQL - Redis的简介、安装、配置和简单操作

目录 一. 知识了解 1. 关系型数据库与非关系型数据库 1.1 关系型数据库 1.2 非关系型数据库 1.3 区别 1.4 非关系型数据库产生背景 1.5 NOSQL 与 SQL的数据记录对比 2. 缓存相关知识 2.1 缓存概念 2.2 系统缓存 2.3 缓存保存位置及分层结构 二 . redis 相关知识 1.…

【tcpdump 命令】

tcpdump 命令 概述常见用法执行 tcpdump -h 就能看见了。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0694be5e8e0647ab929b116488ee74ef.png) 每个参数的详细解释&#xff1a;见[菜鸟教程](https://www.runoob.com/linux/linux-comm-tcpdump.html)。 tcpdump …

《手把手教你》系列技巧篇(六十六)-java+ selenium自动化测试 - 读写excel文件 - 上篇(详细教程)

1.简介 在自动化测试&#xff0c;有些我们的测试数据是放到excel文件中&#xff0c;尤其是在做数据驱动测试的时候&#xff0c;所以需要懂得如何操作获取excel内的内容。由于java不像python那样有直接操作Excle文件的类库&#xff0c;所以我们必须借助第三方工具&#xff1a;P…

【wu-acw-client 使用】案例

wu-acw-client 使用 项目介绍&#xff0c;使用acw-client&#xff0c;创建对应Java项目的增删改查&#xff08;ORM&#xff1a;Lazy ORM、mybatis&#xff09;&#xff0c;项目模块架构&#xff1a;mvc、feign、ddd 演示项目环境&#xff1a;idea 、mac、mysql、jdk17 spring …

直播回顾 | 康谋ADAS仿真与HiL测试研讨会圆满收官,精彩内容全解析,精选QA放送!

AI助力ADAS仿真测试&#xff1a;康谋HiL测试线上直播研讨会圆满收官&#xff01; 本次研讨会特邀知名主机厂和智能驾驶公司的仿真测试领域专业技术工程师&#xff0c;聚焦ADAS仿真系统开发与智能驾驶系统测试&#xff0c;并针对测试流程和挑战&#xff0c;深入讲解了康谋自动驾…

Jquery——js库

1. jQuery 基础操作 jQuery 是一个快速、小巧的 JavaScript 库&#xff0c;设计用于简化 HTML 文档的遍历、事件处理、动画设计和 Ajax 交互。jQuery 使用户能够更快地编写 JavaScript 代码&#xff0c;并且能够更容易地处理 HTML 文档、事件、动画和 Ajax。 加载 jQuery 要…

物联网监控可视化是什么?部署物联网监控可视化大屏有什么作用?

随着物联网技术的深入应用&#xff0c;物联网监控可视化成为了企业数字化转型的关键环节。物联网监控可视化大屏作为物联网监控平台的重要组成部分&#xff0c;能够实时展示物联网设备的运行状态和数据&#xff0c;为企业管理决策和运维监控提供了有力的支持。今天&#xff0c;…

bizcharts中LineChart时间戳使用moment转化出现Invalid Date

文章目录 一、前言1.1、问题1.2、解决 二、bizcharts三、moment.js四、在线源码五、最后 一、前言 1.1、问题 最近在使用bizcharts绘制折线图LineChart的时候&#xff0c;发现X轴的时间显示成了Invalid Date。如下图所示&#xff1a; 发现是后端返回了时间戳字符串"1572…

联发科成功在天玑 9300 芯片部署大模型;小米SU7车载“小爱大模型”语音交互技术

&#x1f989; AI新闻 &#x1f680; 联发科成功在天玑 9300 芯片部署大模型 摘要&#xff1a;联发科宣布&#xff0c;在天玑 9300 等旗舰芯片上首次实现大模型&#xff08;通义千问&#xff09;的深度适配&#xff0c;能够在离线状态下运行多轮 AI 对话。此外&#xff0c;阿…

【Servlet基础】Servlet项目创建

目录 一、认识Servlet 1.1、认识Tomcat 1.2、Servlet是什么 1.3、Servlet主要工作 二、实现第一个Servlet项目 2.1、创建Maven项目 2.2、引入依赖 2.3、创建目录结构 2.4、编写servlet代码 2.5、打包 2.6、部署 2.7、验证程序 三、利用smart Tomcat插件一键完…