C++基础(3) —字符串,向量,数组

1. 命名空间

using用法:在C++中,使用using可以声明命名空间,也可以给类类型起别名
如:
1.using namespace std; //这句话一般放在程序开头
2.using SI = student_item; //相当于给类名起了一个别名

应该注意:位于头文件的代码中,一般不用using声明。

2.标准库类型string

(1) 标准库类型string 定义在命名空间std中

用法:
      #include < string >
     using std:: string;

(2) 初始化string 对象的方式:

用法:
      string s5 = “hello ”
      string s6 (“hello “)
      string s8 = string (10, ‘c’)

(3) 对string的操作如下:

用法:
      从 is 中读取一行付给S: getline (is, s)
      判断S是否为空: S..empty()
      返回S中字符个数: S.size()

(4) 读取未知数量的string :

cin 与 getline() 区别:

      cin : 在执行读取操作时候,刚开始会忽略空格,\n, \t 从真正的字符开始读,遇到下一个空白结束(这里的空白指空格,换行符,制表符)

      getline() 只识别换行符,见到换行符就结束。

(5) string的比较

      如果两个string相同,长短不同,则较短的字符小。

      如果两个string 不同,比较第一个不同的char

      对于string ,不能将两个字面值相加。

即: 字符串字面值,与string 是不同的类型。

3.标准库类型vector

      标准库类型vector 时表示对象的集合,它容纳着相同的对象。但是不可以包括引用。定义方式:vector < string > s2 (10 , “hi”), 对于增加元素,用push_back()函数:

     vector < int > va ;
     for (int i = 0 ; i < 1090 ; i ++)
           v2. push_back(i);

      对于容器的比,和string比较差不多,如果对应位置元素相同,则哪个短哪个就小。不同的话,比较第一个相异的元素。

4.迭代器

      通过下标运算符可以访问string和vector,获取地址用begin()和end()。返回的其实是指针。

迭代器的两个限制:

     (1)不能使用范围for 对迭代器添加元素
     (2)对改变迭代器操作都会让vector的迭代器失效
     (3)(*item).empty == item –> empty

5.指针的数组或者数组的指针:

      读取原则:从括号内向括号外,从右向左。

     (1) int * (& array) [10] : 首先知道 array 是一个引用,其次知道他引用的是一个数组,这个数组内有10各元素,元素类型都是int * 类型。
     (2) int * ptrs[10] : ptr 是个i数组,里面含有10个元素,其中每个元素都是int * 类型。。。int * 类型就是int 指针类型。
     (3) int (* ptrs)[10] : ptr 是 int * 类型, 他指向了一个数组,数组里边有10个int 元素。