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

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

标准库类型 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
    • 迭代器
    • 类型别名简化指针
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值