博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【c++ primer读书笔记】【第3章】字符串、向量和数组
阅读量:5285 次
发布时间:2019-06-14

本文共 2075 字,大约阅读时间需要 6 分钟。

一、标准库类型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<
<

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

二、标准库类型vector

1.  vector的初始化

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

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

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

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

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

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

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

三、迭代器

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

2. 迭代器类型

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

3. 迭代器运算

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

四、数组

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

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

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

#include
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<

转载于:https://www.cnblogs.com/ruan875417/p/4495579.html

你可能感兴趣的文章
瞬间的永恒
查看>>
2019-8-5 考试总结
查看>>
JS中实现字符串和数组的相互转化
查看>>
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>
Elasticsearch 滚动重启 必读
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
浅说 apache setenvif_module模块
查看>>
MySQL--数据插入
查看>>
重新学习python系列(二)? WTF?
查看>>
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>