【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> 中的注意事项

 在 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. 最长公共前缀

方法一: 

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

  • 54
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
### 回答1: C++中可以使用fstream读取txt文件并解析vector<string>中。 代码示例如下: ```c++ #include <fstream> #include <string> #include <vector> using namespace std; int main() { vector<string> lines; string line; ifstream infile("example.txt"); while (getline(infile, line)) { lines.push_back(line); } infile.close(); //遍历vector for (int i = 0; i < lines.size(); i++) { cout << lines[i] << endl; } return 0; } ``` 其中,"example.txt"是需要读取的文件名。 另外还可以使用 C standard library 中的 fopen 和 fgets 读取文件,解析vector<string>中。 代码示例如下: ```c++ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <vector> using namespace std; int main() { vector<string> lines; char line[1024]; FILE *file = fopen("example.txt", "r"); if (file == NULL) { perror("Error opening file"); return(-1); } while (fgets(line, sizeof(line), file)) { lines.push_back(line); } fclose(file); //遍历vector for (int i = 0; i < lines.size(); i++) { printf("%s", lines[i].c_str()); } return 0; } ``` ### 回答2: 在C语言中,要读取txt文件并将其解析vector<string>格式,可以采用以下步骤: 1. 首先,需要包含相关的头文件,例如stdio.h和stdlib.h。这些头文件包含了一些用于文件操作的函数。 2. 创建一个FILE指针,用于打开和读取txt文件。可以使用fopen函数打开文件,并使用相应的模式(例如"r"表示只读方式打开文件)。 3. 创建一个vector<string>类型的变量,用于存储读取的文本行。可以使用vector容器来动态管理字符串数组。 4. 使用fgets函数从文件中逐行读取文本数据。可以使用循环来逐行读取整个文件内容,直到文件结尾。 5. 在每次读取到的文本行后,将其存储到vector<string>变量中。可以使用push_back函数将字符串添加到vector的末尾。 6. 当文件读取完毕后,关闭文件指针,使用fclose函数关闭已打开的文件。 7. 最后,可以通过遍历vector<string>来输出读取到的文本行,或者在需要的地方对文本行进行进一步处理。 下面是一个简单的示例代码,演示了如何在C语言中实现以上步骤: ```c #include <stdio.h> #include <stdlib.h> #include <vector> int main() { FILE *fp; char line[256]; std::vector<std::string> lines; // 打开txt文件 fp = fopen("example.txt", "r"); if (fp == NULL) { printf("无法打开文件\n"); return 1; } // 逐行读取文本数据 while (fgets(line, sizeof(line), fp)) { // 存储文本行到vector中 lines.push_back(line); } // 关闭文件 fclose(fp); // 输出读取到的文本行 for (int i = 0; i < lines.size(); i++) { printf("第%d行:%s", i+1, lines[i].c_str()); } return 0; } ``` 这样,在C语言中我们就可以读取txt文件并将其解析vector<string>格式了。 ### 回答3: 在C语言中读取txt文件并将其解析vector<string>格式,可以通过以下步骤实现: 1. 打开文件:首先需要使用C语言的文件操作函数打开要读取的txt文件。可以使用fopen函数来完成此操作。例如,可以使用以下代码打开名为"example.txt"的文件: ```c FILE* file = fopen("example.txt", "r"); ``` 2. 读取文件内容:使用fgets函数逐行读取文件的内容。可以使用一个字符数组(例如char buffer[256])来存储每行的内容。fgets函数每次读取一行,直到文件结束。例如,可以使用以下代码读取文件内容: ```c char buffer[256]; while (fgets(buffer, sizeof(buffer), file)) { // 进行处理 } ``` 3. 解析内容为vector<string>格式:将读取的每行内容解析string类型,并依次存储到vector<string>中。可以使用C++标准库的string类和vector容器来完成此操作。例如,可以使用以下代码将每行内容存储到vector<string>中: ```c #include <vector> #include <string> std::vector<std::string> lines; char buffer[256]; while (fgets(buffer, sizeof(buffer), file)) { std::string line(buffer); lines.push_back(line); } ``` 4. 关闭文件:完成文件的读取后,需要使用fclose函数关闭文件。例如,可以使用以下代码关闭文件: ```c fclose(file); ``` 通过以上步骤,可以在C语言中读取txt文件并将其解析vector<string>格式。在解析之后,可以对vector<string>进行进一步的操作和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值