首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨
C/C++/C#

C/C++/C#

202071 帖子 7 成员
创建于 2025-05-20 组长:啊龙
本小组主要为进行C/C++技术交流而开设的技术论坛,社区版主及管理员在此分享学习资源供社区学员进行学习、交流、提问及解答问题。对C/C++感兴趣的朋友可随时关注本版块。

  • multimap 容器保存的是有序的键/值对,但它可以保存重复的元素。multimap 中会出现具有相同键的元素序列,它们会被添加到容器中。multimap 和 map 有相同范围的构造函数,默认的比...
    风轻y 发表于 192 天前
    0
    52
  • tuple 模板是 pair 模板的泛化,但允许定义 tuple 模板的实例,可以封装不同类型的任意数量的对象,因此 tuple 实例可以有任意数量的模板类型参数。tuple 模板定义在 tuple ...
    风轻y 发表于 192 天前
    0
    59
  • 我们已经知道 pair 对象是如何封装键及其关联的对象,也了解了 pair 对象是如何表示map容器中的元素的。一般来说,pair 对象可以封装任意类型的对象,可以生成任何想生成的 pair 对象,可...
    风轻y 发表于 192 天前
    0
    49
  • map 的成员函数 erase() 可以移除键和参数匹配的元素,然后返回所移除元素的个数,例如:std::map people {{ "Fred", 45}, {"Joa...
    风轻y 发表于 192 天前
    0
    68
  • 我们已经知道,可以获取 map 容器的开始和结束迭代器以及反向迭代器,它们都可以访问容器中的所有元素。map 的成员函数 at() 返回的是参数键对应的对象。如果这个键不存在,就会拋出 out_of_...
    风轻y 发表于 192 天前
    0
    56
  • map 容器的成员函数 emplace() 可以在适当的位置直接构造新元素,从而避免复制和移动操作。它的参数通常是构造元素,也就是 pair 对象所需要的。只有当容器中现有元素的键与这个元素的键不同时...
    风轻y 发表于 192 天前
    0
    72
  • map 容器的成员函数 insert() 有多个版本,它们可以在 map 中插入一个或多个 pair 对象。只能插入 map 中不存在的元素。下面这个代码片段展示了如何插入单个元素:std::map ...
    风轻y 发表于 192 天前
    0
    134
  • map 类模板有 4 个类型参数,但一般只需要指定前两个模板参数的值。第 1 个是键的类型,第 2 个是所保存对象的类型,第 3 个和第 4 个模板参数分别定义了用来比较键的函数对象的类型以及为 ma...
    风轻y 发表于 192 天前
    0
    55
  • 序列容器是管理数据的宝贵工具,但对大多数应用程序而言,序列容器不提供方便的数据访问机制。举个简单的示例,当我们用它处理姓名和地址时,在这种场景下,序列容器可能并不能如我们所愿。一种典型的方法是通过名称...
    风轻y 发表于 192 天前
    0
    49
  • 现在主要讲解智能指针的使用。这和原生指针在本质上是相同的,除非想要自己负责删除它们所指向的对象。当生成优先级队列或堆时,需要一个顺序关系来确定元素的顺序。当它们保存的是原生指针或智能指针时,总是需要为...
    风轻y 发表于 192 天前
    0
    44
  • 通常用容器保存指针比保存对象更好,而且大多数时候,保存智能指针比原生指针好。下面是一些原因:在容器中保存指针需要复制指针而不是它所指向的对象。复制指针通常比复制对象快。在容器中保存指针可以得到多态性。...
    风轻y 发表于 192 天前
    0
    69
  • 堆(heaps)不是容器,而是一种特别的数据组织方式。堆一般用来保存序列容器。堆很重要,很多不同的计算机进程中都使用了它们。为了弄明白堆是什么,首先需要明白树是什么,因此首先说明树这种数据结构是什么。...
    风轻y 发表于 192 天前
    0
    55
  • 不出所料,priority_queue 容器适配器定义了一个元素有序排列的队列。默认队列头部的元素优先级最高。因为它是一个队列,所以只能访问第一个元素,这也意味着优先级最高的元素总是第一个被处理。但是...
    风轻y 发表于 192 天前
    0
    60
  • 只能访问 queue 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。许多程序都使用了 queue 容器。queue 容器可以用来表示超市的结账队列或服务器上等待执行...
    风轻y 发表于 192 天前
    0
    50
  • 容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。stack容器适配器中的数据是以 LIFO...
    风轻y 发表于 192 天前
    0
    69
  • 迭代器对于任何自定义的类序列都是一个强大的附加工具。它允许我们将算法运用到有自定义类元素的容器上。可能会出现一种情形,没有可以满足我们需要的标准 STL 容器,这时候就需要定义一个自己的容器。我们的容...
    风轻y 发表于 192 天前
    0
    62
  • forward_list 容器以单链表的形式存储元素。forward_list 的模板定义在头文件 forward_list 中。fdrward_list 和 list 最主要的区别是:它不能反向遍历...
    风轻y 发表于 192 天前
    0
    63
  • list 的成员函数 front() 和 back(),可以各自返回第一个和最后一个元素的引用。在空 list 中调用它们中的任意一个,结果是未知的,因此不要这样使用。可以通过迭代器的自增或自减来访问...
    风轻y 发表于 192 天前
    0
    64
  • sort() 函数模板定义在头文件 algorithm 中,要求使用随机访问迭代器。但 list 容器并不提供随机访问迭代器,只提供双向迭代器,因此不能对 list 中的元素使用 sort() 算法。...
    风轻y 发表于 192 天前
    0
    58
  • 对于 list 的成员函数 clear() 和 erase(),它们的工作方式及效果,和前面的序列容器相同。list 容器的成员函数 remove() 则移除和参数匹配的元素。例如:std::list...
    风轻y 发表于 192 天前
    0
    58
  • 可以使用 list 容器的成员函数 push_front() 在它的头部添加一个元素。调用 push_back() 可以在 list 容器的末尾添加一个元素。在下面这两个示例中,参数作为对象被添加:s...
    风轻y 发表于 192 天前
    0
    67
  • list 容器模板定义在 list 头文件中,是 T 类型对象的双向链表。list 容器具有一些 vector 和 deque 容器所不具备的优势,它可以在常规时间内,在序列已知的任何位置插入或删除元...
    风轻y 发表于 192 天前
    0
    65
  • deque 的成员函数 assign() 可以替换现有的所有元素。它有三个重版版本;替换的新内容可以是由初始化列表指定的元素,也可以是由迭代器指定的一段元素,或是一个特定对象的多个副本。这里展示了如何...
    风轻y 发表于 192 天前
    0
    52
  • deque 和 vector 都有成员函数 push_back() 和 pop_back(),它们在序列尾部添加或删除元素的方式相同。deque 也有成员函数 push_front() 和 pop_f...
    风轻y 发表于 192 天前
    0
    55
  • 可以使用下标运算符来访问 deque 容器中的元素。这个操作和 vector 容器中的类似,所以下标也没有做边界检查。deque 容器中的元素是序列,但是内部的存储方式和 vector 不同。它组织元...
    风轻y 发表于 192 天前
    0
    57
  • deque,一个定义在 deque 头文件中的容器模板,可以生成包含 T 类型元素的容器,它以双端队列的形式组织元素。可以在容器的头部和尾部高效地添加或删除对象,这是它相对于 vector 容器的优势...
    风轻y 发表于 192 天前
    0
    64
  • 正像所说的那样,只能通过容器的成员函数来删除元素。可以通过使用 vector 的成员函数 clear() 来删除所有的元素。例如:std::vector data(100, 99);// Contai...
    风轻y 发表于 192 天前
    0
    71
  • 通过使用成员函数 emplace(),可以在 vector 序列中插入新的元素。对象会在容器中直接生成,而不是先单独生成对象,然后再把它作为参数传入。emplace() 的第一个参数是一个迭代器,它确...
    风轻y 发表于 192 天前
    0
    70
  • 记住,向容器中添加元素的唯一方式是使用它的成员函数。如果不调用成员函数,非成员函数既不能添加也不能删除元素。这意味着容器对象必须通过它所允许的函数去访问,迭代器显然不行。可以通过使用容器对象的 pus...
    风轻y 发表于 192 天前
    0
    83
  • 正如期望的那样,vector 容器实现了所有可以返回迭代器的成员函数,包括 const 迭代器和 nonconst 迭代器,以及反向迭代器。vector 容器的迭代器是随机访问迭代器。当然,也可以通过...
    风轻y 发表于 192 天前
    0
    61
站长交流