您现在的位置是:首页 > 唯美句子

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

作者:康由时间:2024-04-06 18:50:28分类:唯美句子

简介  文章浏览阅读1.3k次,点赞45次,收藏38次。在【C++】中,vector是一个动态数组,它可以根据需要自动调整自身的大小。同样 vector 表示一个由 string 组成的 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> 的一些例子: 

创建一个空的 vector<string>
 
vector<string> vec1;
创建包含5个空字符串的 vector<string> 
 
vector<string> vec2(5);
 创建包含5个 "abc" 的 vector<string>
 
vector<string> vec3(5, "abc");
使用初始化列表创建 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> 中的注意事项

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

点击全文阅读

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

我来说两句