- 博客(80)
- 收藏
- 关注
原创 C++Primer 拷贝控制示例
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-03-18 16:05:34
765
9
原创 C++ Primer 交换操作
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-03-08 20:15:51
913
3
原创 C++ Primer 拷贝控制和资源管理
对于行为类似指针的类,我们需要为其定义拷贝构造函数和拷贝赋值运算符,来拷贝指针成员本身而不是它指向的string。我们的类仍然需要自己的析构函数来释放接受string参数的构造函数分配的内存。但是,在本例中,析构函数不能单方面地释放关联的string。只有当最后一个指向string的HasPtr销毁时,它才可以释放string。令一个类展现类似指针的行为的最好方法是使用shared_ptr来管理类中的资源。拷贝(或赋值)一个shared_ptr会拷贝(赋值)shared_ptr所指向的指针。
2025-03-06 23:23:23
996
3
原创 C++ Primer 拷贝、赋值与销毁
在新标准下,我们可以通过将拷贝构造函数和拷贝赋值运算符定义为删除的函数(deleted function)来阻止拷贝。删除的函数是这样一种函数:我们虽然声明了它们,但不能以任何方式使用它们。//使用合成的默认构造出数//阻止拷贝//阻止赋值// 使用合成的析构函数// 其他成员一个删除了析构函数的类型,编译器将不允许定义该类型的变量或创建该类的临时对象。而且,如果一个类有某个成员的类型删除了析构函数,我们也不能定义该类的变量或临时对象。因为如果一个成员的析构函数是删除的,则该成员无法被销毁。
2025-03-06 23:11:20
906
原创 C++ Primer 动态数组
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-03-04 23:10:10
935
2
原创 C++ Primer 动态内存与智能指针
最终,我们会将Blob类实现为一个模板,但我们直到才会学习模板的相关知识。因此,现在我们先定义一个管理string的类,此版本命名为StrBLob。实现一个新的集合类型的最简单方法是使用某个标准库容器来管理元素。采用这种方法,我们可以借助标准库类型来管理元素所使用的内存空间。在本例中,我们将使用vector来保存元素。但是,我们不能在一个Blob对象内直接保存vector,因为一个对象的成员在对象销毁时也会被销毁。例如,假定b1和b2是两个Blob对象,共享相同的vector。
2025-03-04 23:09:25
1005
原创 C++ Primer 无序容器
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-03-02 11:05:09
1034
2
原创 C++关联容器操作
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-03-02 11:04:33
996
原创 C++ Primer 联容器概述
关联容器不支持顺序容器的位置相关的操作,例如push_front或push_back。原团是关联容器中元素是根据关键字存储的,这些操作对关联容器没有意义。而且,关联容器也不支持构造函数或插入操作这些接受一个元素值和一个数量值的操作。除了与顺序容器相同的操作之外,关联容器还支持一些顺序容器不支持的操作和类型别名。此外,无序容器还提供一些用来调整哈希性能的操作。关联容器的迭代器都是双向的。
2025-03-01 22:14:16
773
原创 C++ Primer 使用关联容器
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-03-01 22:13:10
525
原创 C++ Primer 关联容器概述
关联容器不支持顺序容器的位置相关的操作,例如push_front或push_back。原团是关联容器中元素是根据关键字存储的,这些操作对关联容器没有意义。而且,关联容器也不支持构造函数或插入操作这些接受一个元素值和一个数量值的操作。除了与顺序容器相同的操作之外,关联容器还支持一些顺序容器不支持的操作和类型别名。此外,无序容器还提供一些用来调整哈希性能的操作。关联容器的迭代器都是双向的。
2025-02-28 20:49:10
705
3
原创 C++ Primer 使用关联容器
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-28 20:48:29
830
原创 C++ Primer 特定容器算法
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-27 21:37:53
779
4
原创 C++ Primer 泛型算法结构
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-27 21:37:12
888
2
原创 C++ Primer 再探迭代器
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-26 23:19:54
1025
4
原创 C++ Primer 泛型算法定制操作
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-26 23:18:55
604
2
原创 C++ Primer 初识泛型算法
一种保证算法有足够元素空闰来容纳输出数据的方法是使用撒入迭代器(insert iterator)。插入迭代器是一种向容器中添加元素的迭代器。通常情况,当我们通过一个迭代器向容器元素赋值时,值被赋予迪代器指向的元素。而当我们通过一个插入迭代器赋值时,一个与赋值号右侧值相等的元素被添加到容器中。但是,为了展示如何用算法向容器写入数据,我们现在将使用back_inserter,它是定义在头文件iterator中的一个函数。back_inserter接受一个指向容器的引用,返回一个与该容器绑定的插入迪代器。
2025-02-25 21:22:32
938
10
原创 C++ Primer 算法概述
大多数算法都定义在头文件algorithm中。标准库还在头文件nuameric中定义了一组数值泛型算法。一般情况下,这些算法并不直接操作容器,而是遍历由两个迭代器指定的一个元素范围来进行操作。通常情况下,算法遍历范围,对其中每个元素进行一些处理。例如,假定我们有一个int的vector,希望知道vector中是否包含一个特定值。int val=42;//我们将查找的值// 如果在vec中找到想要的元素,则返回结果指向它,否则返回结果为vec.cend()//报告结果。
2025-02-25 21:21:35
991
1
原创 C++ Primer 容器适配器
每个适配器都定义两个构造函数:默认构造函数创建一个空对象,接受一个容器的构造函数拷贝该容器来初始化适配器。//从deq拷贝元素到stk默认情况下,stack和queue是基于deque实现的,priority_queue是在vector之上实现的。我们可以在创建一个适配器时将一个命名的顺序容器作为第二个类型参数,来重载默认容器类型。//在vector上实现的空栈//str_stKk2在yector上实现,初始化时保存syec的拷贝对于一个给定的适配器,可以使用哪些容器是有限制的。
2025-02-24 21:55:00
1304
5
原创 C++ Primer 额外的string操作
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-24 21:54:22
1395
1
原创 C++ Primer vector对象是如何增长的
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-23 12:35:29
842
7
原创 C++ Primer 顺序容器操作
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-23 12:34:21
1030
7
原创 C++ Primer 容器库概述
每个容器类型都定义了一个默认构造函数。除array之外,其他容器的默认构造函数都会创建一个指定类型的宇容器,且都可以接受指定容器大小和元素初始值的参数。表9.3:容器定义和初始化C c默认构造函数。如果c是一个array,则c中元素按默认方式初始化;否则c为空C c1(c2)c1初始化为c2的拷贝。c1和c2必须是相同类型(即,它们必须是相同的容器类型,日保存的是相同的元素类型;对于array类型,两者还必须具有相同大小C c1= c2初始化为初始化列表中元素的拷贝。列表中元素的类型必须与c的。
2025-02-22 21:22:46
941
4
原创 C++ Primer 顺序容器概述
表9.1列出了标准库中的顺序容器,所有顺序容器都提供了快速顺序访问元素的能力。向容器添加或从容器中删除元素的代价非顺序访问容器中元素的代价表9.1:顺序容器类型vector可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢deque双端队列。支持快速随机访问。在头尾位置插入/删除速度很快list双向链表。只支持双向顺序访问。在1ist中任何位置进行插入/删除操作速度都很快单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作速度都很快array固定大小数组。
2025-02-22 21:22:03
852
7
原创 C++ Primer string流
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-21 21:24:50
1074
12
原创 C++ Primer 文件输入输出
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-21 21:23:25
728
5
原创 C++ Primer 库-IO类
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-20 23:19:33
685
1
原创 C++ Primer 类的静态成员
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-20 23:18:48
812
原创 C++ Primer 构造函数再探
public://其他成员与之前的版本一致//错误:string构造函数是explicit的//错误:istream构造函数是explicit的关键字explicit只对一个实参的构造函数有效。需要多个实参的构造函数不能用执行隐式转换,所以无须将这些构造函数指定为exp1icit的。//错误;explicit关键守只允许出现在类内的构造函数声明处。
2025-02-19 23:09:16
1050
2
原创 C++ Primer 类的作用域
一个类就是一个作用域的事实能够很好地解释为什么当我们在类的外部定义成员函数时必须同时提供类名和函数名。在类的外部,成员的名字被隐藏起来了。一旦遇到了类名,定义的剩余部分就在类的作用域之内了,这里的剩余部分包括参数列表和函数体。结果就是,我们可以直接使用类的其他成员而无须再次授权了。因为编详器在处理参数列表之前已经明确了我们当前正位于Window_mgr类的作用域中,所以不必再专门说明ScreenIndex是Window_mgr类定义的。
2025-02-19 23:08:22
781
原创 C++ Primer 类的其他特性
Screen表示显示器中的一个窗口。每个Screen包含一个用于保存Screen内容的string成员和三个string::size_type类型的成员,它们分别表示光标的位置以及屏幕的高和宽。除了定义数据和函数成员之外,类还可以自定义树种类型在类中的别名。
2025-02-18 23:06:06
1035
5
原创 C++ Primer 访问控制与封装
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-18 23:05:19
1021
1
原创 C++ Primer 类-定义抽象数据类型
例如,sales_item类是一个抽象数据类型,我们通过它的接口描述的操作)来使用一个Salesitem对象,我们不能访问Salesitem对象的数据成员,事实上,我们甚至根本不知道这个类有哪些数据成员。与之相反,Sales_data类不是一个抽象数据类型。它允许类的用户直接访问它的数据成员,并且要求由用户来编写操作。要想把Sales_data变成抽象数据类型,我们需要定义一些操作以供类的用户使用。一旦Sales_data定义了它自己的操作,我们就可以封装(隐藏)它的数据成员了。
2025-02-17 23:18:21
1119
原创 C++ Primer 函数指针
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-17 23:17:02
914
原创 C++ Primer 函数匹配
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-16 12:01:40
1042
10
原创 C++ Primer 特殊用途语言特性
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-16 12:00:09
1080
20
原创 C++ Primer 函数重载
有一种典型的数据库应用,需要创建几个不同的函数分别根据名字、电话、账户号码等信息查找记录。函数重载使得我们可以定义一组函数,它们的名字都是lookup,但是查找的依据不同。Record lookup(constRccount&J)}//根据Rccount查找记录//根据Phone查找记录//根据Name查找记录Record r1=Lookup(acct)}//调用接受Account的版本//调用接取Phone的版本其中,虽然我们定义的三个函数各不相同,但它们都有同一个名字。
2025-02-15 13:34:09
975
33
原创 C++ Primer 返回值和return语句
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-15 13:33:15
799
15
原创 C++ Primer 参数传递
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-14 22:33:33
1037
8
原创 C++ Primer 函数基础
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
2025-02-14 22:32:43
653
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人