C++ Primer总结(二)

第三章 标准库类型

1. 俩种最重要的标准库类型:
  • string:支持长度可变的字符串
  • vector:可用于保存一组指定类型的对象。
2. 命名空间的using声明

有一种情况必须使用完全限定的标准库的名字:在头文件中,理由是头文件的内容会被预处理器复制到程序中。用#include包含文件时,相当于头文件中的文本将成为我们编写的文件的一部分。如果在头文件中放置using声明,就相当于在包含该文件using的每个程序都放置了同一个using。不论该程序是否需要using声明。

3. 标准库string类型
  • string类型支持长度可变的字符串,C++标准库将负责管理与存储相关的内存,以及提供各种有用的操作。
  • string标准库支持几个构造函数,当没有明确指定对象初始化式时,系统将使用默认构造函数。

  • string对象的操作

  • string类类型和许多其他库类型都定义了一些配套类型,通过这些配套类型,库类型的使用就能与机器无关,size_type就是这些配套类型中的一种。即string::size_type.
  • 当string对象和字符串面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型。
4. cctype中的函数

5. 标准库vector类型
  • vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储元素相关的内容,我们把vector称为容器。
  • vector是一个类模板。
  • vector初始化

  • vector的操作

  • 下标操作不添加元素,只能对确知已存在的元素才能进行下标操作。
6. 迭代器
  • 除了使用下标来访问vector对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器。迭代器是一种检查容器内元素并遍历元素的数据类型。
  • 每个容器都定义了自己的迭代器如vector: vector<int>::interator inter;
  • begin和end操作:begin返回的迭代器指向第一个元素;end操作返回的迭代器指向vector的末端元素的下一个。超出末端迭代器。表面它指向一个不存在的元素。
  • 迭代器类型可使用解引用操作符(*)来访问迭代器所指向的元素。
  • cost_iterator:只能用于读取容器内元素,但是不能改变其值。
  • 任何改变vector长度的操作都会使已存在的迭代器失效。例如,在调用push_back之后,就不能再信赖指向vector的迭代器的值了。
7. 标准库bitset
  • 初始化

  • 操作

第四章 数组和指针

1. 数组
  • 数组的定义与初始化
  • 不允许直接复制和赋值
  • 数组的长度是固定,一经定义,就不允许再添加元素
2. 指针
  • 指针和引用的比较:第一个区别在于引用总是指向某个对象,定义引用时没有初始化式错误的。第二则是赋值行为的差异,给引用赋值修改的是该引用所关联的对象的值,而并不是使引用与另一个对象关联。
  • 指针数组与指向数组的指针
  • 俩个指针减法操作的结果是标准库类型ptrdiff_t的数据
3. 创建动态数组
  • 使用new 和 delete来完成动态数组的创建的销毁
  • 动态数组分配时,如果数组元素具有类类型,将使用该类的默认构造函数实现初始化;如果数组元素是内置类型,则无初始化。
  • 可以使用跟在数组长度后面的一对空圆括号,对数组元素做初始化。
  • 提供delete[]表达式来释放指针所指向的数组空间
  • 在要求C风格字符串的地方不可以直接使用标准库string类型对象,但是string类提供了一个名为c_str的成员函数。
  • c_str函数返回C风格字符串,返回C风格字符串的表示方法,即返回指向字符数组首地址的指针,该数组存放了与string对象相同的内容,并且以结束符null结束。
  • c_str返回的指针指向const char 类型的数组。正确的初始化方式:const char *str = st2.c_str。
  • 如果程序需要持续访问该数据,应该复制c_str函数返回的数组。
4. 使用数组初始化vector对象

使用数组初始化vector对象,必须指出用于初始化式的第一个元素以及数组最后一个元素的下一位置的地址:

例如:cost size_t arr_size = 6; int int_arr[arr_size] = {0,1,2,3,4,5};

            vector<int> ivec(int_arr, int_arr + arr_size);









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值