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

这篇具有很好参考价值的文章主要介绍了【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;
    // 定义一个空的 word
    vector<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>,C++,c++,开发语言,算法,面试,c语言

 五、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;//s
	cout << a[4][4] << endl;//j
	//超过第四个元数的长度 报错  subscript out of the range 
	cout << b<<endl;//8
	cout << c << endl;//7
	cout << d << endl;//3
	
	return 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. 最长公共前缀

vector<string>,C++,c++,开发语言,算法,面试,c语言

方法一: 

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 二维数组 的理解,请持续关注我哦!!

vector<string>,C++,c++,开发语言,算法,面试,c语言文章来源地址https://www.toymoban.com/news/detail-855224.html

到了这里,关于【C++】 vector <string> 的超详细解析!!!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】反向迭代器的模拟实现通用(可运用于vector,string,list等模拟容器)

    🌏博客主页: 主页 🔖系列专栏: C++ ❤️感谢大家点赞👍收藏⭐评论✍️ 😍期待与大家一起进步! 我们要写出一个通用的反向迭代器模拟而且在保证代码简介不繁琐的的情况下,一定程度上使用我们自己模拟的已经封装好的iterator迭代器可以简化许多步骤,首先我们要知

    2024年02月14日
    浏览(42)
  • 【初阶C语言】关于scanf函数的超详细介绍和多组输入

    感谢各位可以光临娥子的作品   我们学习一个函数,要围绕三个点 :1.函数是什么  2.函数的用法   3.注意的细节 认识一个 函数,我们需要了解他的功能、返回值、接收的参数三个方面 函数原型  (1)功能介绍          scanf函数是一个输入函数 ,所以接收的参数类型需

    2024年02月08日
    浏览(42)
  • 银行家算法——C++实现 [ 开源代码 + 详细解析 ]

    ✅ (原创,纯手敲,开源免费,2021的最后一篇) Banker Algorithm 🏦 ◆ 说明 :上述算法的核心实现采用了 “DFS + 回溯” 的方法,详见后文的源代码。另外,如果把 C++ 代码里面的 “ p_num=1; ” 注释掉,得到的是另一个结果。我虽然输入是“0”,但代码里后面我直接把 p_num 赋值

    2023年04月26日
    浏览(64)
  • C++ //练习 11.12 编写程序,读入string和int的序列,将每个string和int存入一个pair中,pair保存在一个vector中。

    练习 11.12 编写程序,读入string和int的序列,将每个string和int存入一个pair中,pair保存在一个vector中。 环境:Linux Ubuntu(云服务器) 工具:vim   代码块 运行结果显示如下

    2024年04月10日
    浏览(34)
  • 【C++技能树】Vector类解析与模拟实现

    Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法…感兴趣就关注我bua! Vector 是一个动态数组的容器,可以容纳各种类型的序列容器。称其为数组,意味着:**其也可以用下标去访问,类似与之前的顺序表。**所以, Vector分配空间的时候也不是说用多少就分配多少,

    2024年02月16日
    浏览(29)
  • 进程调度算法——C++实现 [ FCFS,SJF,HPR,HRN + 开源代码 + 详细解析 ]

    ✅ (原创,库存,第100篇博客,纪念一下) (1) 先来先服务算法FCFS (First Come First Service):即调度程序只靠率一个参数———作业到达系统的时间,谁先到就先给谁提供服务。 (2) 最短作业优先算法SJF (Shortest Job First):即我们也只考虑一个参数———进程的CPU的执行时间,计算量

    2023年04月13日
    浏览(23)
  • C++中的vector的详细用法

    目录 C++中的vector的详细用法 一、vector的介绍 二、存储类型 三、函数 四、vector二维数组两种方法 五、vector中find()用法 六、vector的访问 七、vector中insert()函数增加元素操作 八、vector中erase()函数删除元素操作 头文件:#include vector 向量(Vector)是一个封装了动态大小数组的顺

    2024年02月06日
    浏览(34)
  • C++关于vector的详细介绍

    vector底层本质就是一个顺序表,它是一个可变长的数组,采用连续存储的空间来存储数据,它的元素类型也可以是任意的内置类型或者自定义类型。 第一种方式: 定义一个任意类型的空vector 第二种方式: 定义一个任意类型的vector,并用n个val来初始化vector 第三种方式: 定义

    2024年02月06日
    浏览(29)
  • 【华为OD机试真题 C++语言】68、矩阵扩散 | 机试题+算法思路+考点+代码解析

    🍂个人博客首页: KJ.JK   🍂专栏介绍: 华为OD机试真题汇总,定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏将使用C++语言进行更新解答,包含真题,思路分析,代码参考,欢迎大家订阅学习 🎃题目描述 存在一个m*n的二维数组,其成员取值范围为0或1

    2024年02月16日
    浏览(45)
  • c++算法——vector

            vector 是标准模板库的一个容器,直接翻译为“向量”,一般来成“可变长数组”,也即“长度会根据需要而变化的数组”。在竞赛中有些题目需要很大的很大的数组,而有些还用不上就需要用到 vector 。         使用 vector 首先要加#include vector,当然万能头也

    2023年04月24日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包