我是靠谱客的博主 悲凉草莓,最近开发中收集的这篇文章主要介绍第三章 字符串、向量和数组第三章 字符串、向量和数组,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第三章 字符串、向量和数组

标准库类型 string

  1. 头文件:#include <string>

  2. string定义和初始化:

    string s1;
    string s1(s2);
    string s1 = "hello";  //注意:与下一个语句等价,这里字面值“hello”的空字符并未保存到s1.
    string s1("hello");
    string s1(n, 'c');
    
  3. string对象的操作:

    cin>>s1;
    cout<<s1;
    geline(cin, s1);
    s.empty();
    s.size();
    s[n];
    s1 + s2;
    s1 = s2;
    s1 == s2;
    s1 != s2;
    < > <= >=
    

    注意事项:

    geline(cin, s); 和 cin>>s; 的区别:

    • geline从输入流中读取,直至遇到换行符停止,换行符也被读取,但是s中并不保存换行符;
      若第一个字符就读到换行符,则s为空
    • cin>>s 从第一个非空白字符开始,直至遇到第一个空白符结束

    s.size()的返回值为 string::size_type 类型,是无符号数

    • 定义该类型的变量可以直接使用:decltype(s.size()) i = 0;

    • string 和 字符字面值 或 字符串字面值 混合相加时,必须确保加号左右两侧至少得有一个string类型

  4. string中的字符的操作:

    头文件:#include <cctype>

标准库类型 vector

  1. 头文件:#include

  2. vector定义和初始化:

    vector<int> a;
    vector<int> b(a);
    vector<string> c{"kk", "mm", "n"};
    vector<int> d(10); 
    vector<int> d(10, 2);
    vector<string> str(10);
    vector<string> str(10, "hi");
    
  3. vector对象的操作:

    v.empty();
    v.size();
    v.push_back(t);
    v[n];
    v1 = v2;
    v1 = {a, b, c...};
    v1 == v2;
    v1 != v2;
    < > <= >=;
    
    • v.size() 的返回值 是 vector<int>::size_type 类型 / vector<string>::size_type 等等

    • 如果循环体内包含向vector对象添加元素的语句,则不能使用范围for循环

迭代器与指针

  1. 指针就是一种迭代器

  2. 迭代器可以进行的操作和用法 与 指针几乎相同

  3. 迭代器的类型:

    vector<int>::iterator it;	//it可以读写vector<int>的元素
    string::iterator it;
    vector<int>::const_iterator it;   //只读
    string::const_iterator it;
    
  4. 迭代器的使用:

    • 对于类类型:使用成员函数begin() end() cbegin() cend()
      auto beg = it.begin();

    • 对于数组:使用标准库函数begin() end()
      int *beg = begin(array_name);

string对象 字符串字面量 数组 三者的关系

  1. 使用字符串字面量初始化string

    string s{"hello"};
    
  2. 使用string初始化字符串指针

    char *str = s.c_str();
    //s.c_str()函数返回值一个指针,该指针指向一个以空字符结束的字符数组
    
  3. 使用数组初始化vector

    int array[10];
    vector<int> vec{begin(array), end(array)};
    //可对上式begin和end处进行适当运算,只使用数组array的一部分初始化vertor
    

多维数组

  1. 范围for语句处理多维数组易错点
    • 范围for循环嵌套使用时,为避免数组被自动转为指针,将外层循环的控制变量声明成引用
  2. 处理多维数组的4种方法:
    • 传统C语言指针
    • 使用auto decltype
    • 迭代器
    • 类型别名简化指针

最后

以上就是悲凉草莓为你收集整理的第三章 字符串、向量和数组第三章 字符串、向量和数组的全部内容,希望文章能够帮你解决第三章 字符串、向量和数组第三章 字符串、向量和数组所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部