【c++ primer读书笔记】【第3章】字符串、向量和数组

一、标准库类型string

1.string的初始化

string s1;           //默认初始化,s1是一个空串
string s2(s1);        //直接初始化,s2是s1的副本
string s2=s1;        //拷贝初始化,s2是s1的副本
string s3(“value”);   //直接初始化,s3是字面值“value”的副本
string s3=“value”    //拷贝初始化,s3是字面值“value”的副本
string s4(n,’a’);      //直接初始化,s4初始化为由连续n个字符a组成的串

2. getline函数读取整行文本,直到遇到换行符为止。

3. size函数返回string对象中字符的个数,返回值是一个string::size_type类型的值,它是无符号数。

4. 关系运算符<,<=,>,>=按字典顺序比较两个string对象的大小。

5. empty成员函数表示当string对象为空时返回true,否则返回false;

    size成员函数表示返回string对象中字符的个数。

6.加法运算符的两次的运算对象至少有一个是string;

string s2 = s1 + ""; //正确
string s2 = "hello " + " world"; //错误

7.  用范围for操作string中的每个字符

string str("helloworld");
for(auto c:str)
   cout<<c<<endl;

8.  下标运算符接收的参数是string::size_type类型的值,返回值是该位置字符的引用

二、标准库类型vector

1.  vector的初始化

vector<T> v1;    //默认构造函数,初始化的v1为空vector
vector<T> v2(v1); //将v1中的元素全部复制到v2中,v1中对象的类必须与v2的类相同
vector<T> v2=v1;  //等价于vector<T> v2(v1)
vector<T> v3(n);  //v3含有n个重复执行了值初始化的对象
vector<T> v4(n, v);  //v4含有n个值为v的元素
vector<T> v5{a,b,c…};  //v5包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<T> v5={a,b,c…};  //等价于vector<T> v5{a,b,c…}

2.在上面第4种情况的初始化中,

如果vector对象的元素是内置类型,如int,则元素初始值自动设为0;

如果T为某种类类型并含有默认的构造函数,则T会被按照构造函数进行初始化;

如果不符合以上两种情况,在初始化vector时一定要指出如何初始化其中元素。

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

3. vector的empty和size两个成员函数和string的同名成员函数功能一致

三、迭代器

1. 每个标准库容器都会定义迭代器,用于遍历其中的每一个元素。begin成员函数负责指向第一个元素的迭代器,end函数负责指向尾元素的下一位置的迭代器,也就是该迭代器指向不存在的尾后元素

2. 迭代器类型

vector<int>::iterator it;  //it能读写vector<int>的元素
vector<int>::const_iterator it; //it只能读vector<int>的元素

3. 迭代器运算

只要迭代器指向同一个容器中的元素或者尾元素的下一位置,就能相减,结果是迭代器的距离,类型是difference_type;

四、数组

1.数组不允许拷贝和赋值

int a[]={1,2,3};
int a2[]=a;   //错误,不能用一个数组初始化另一个数组
a2=a       //错误,不能把一个数组赋值给另一个数组

2. c++11引入两个名为begin和end函数

#include<iostream>
using namespace std;
int main(){
    int ia[]={1,2,3,4,5,6,7,8};
    int *pbeg=begin(ia);//指向ia首元素的指针
    int *pend=end(ia);//指向ia尾元素的下一位置的指针
    for(;pbeg!=pend;++pbeg)
        cout<<*pbeg<<" ";
    cout<<endl;

    system("pause");
    return 0;
}

原文地址:https://www.cnblogs.com/ruan875417/p/4495579.html