C++ STL 中 deque::assign 和 deque::at 之间的区别2025年5月10日 | 阅读 8 分钟 双端队列(deque)是序列容器,可以在两端增长和收缩。它们类似于 vector,但在元素添加到开头或结尾时效率更高。与 vector 不同,它们不总是保证连续存储分配。在本文中,我们将讨论 C++ 中 deque::assign 和 deque::at 之间的区别。在讨论它们之间的区别之前,我们必须了解 C++ 中 deque::assign 和 deque::at 的语法、参数和示例。 C++ 中的 deque::assign 是什么?成员函数 deque::assign 根据需要调整 std::deque 的大小,并替换其所有元素的当前内容。在删除之前的元素后,deque 会用来自范围、初始化列表或指定计数重复值的指定值填充。此函数在一步中重新初始化 deque 的内容时特别有用。与直接赋值不同,赋值时 deque 的大小保证与提供的数据匹配。它修改整个结构,而不是检查 deque 的边界。 语法它具有以下语法: 目的:使用此函数可以替换 deque 的当前内容并调整其大小。 功能
重载有
示例让我们通过一个例子来说明 C++ 中的 deque::assign。 deque::at 是什么?deque::at 函数使用这些函数在执行边界检查的同时访问或修改 std::deque 中特定索引处的元素。通过在指定的索引超出范围时抛出 std::out_of_range 异常,它可以确保元素的访问是安全的。该函数不会改变 deque 的大小或结构,它只修改已存在的对象。它可用于读取和修改值。它非常适合无法保证索引有效性的情况,因为与下标运算符 ([]) 相比,它提供了更高的安全性,因为它进行了边界检查。 语法它具有以下语法: 目的:它提供对给定索引处元素的边界检查访问。 功能
使用
示例让我们通过一个例子来说明 C++ 中的 deque::at。 C++ 中 deque::assign 和 deque::at 之间的主要区别![]() C++ 中 deque::assign 和 deque::at 之间存在一些主要区别。一些主要区别如下:
示例用法示例 1让我们通过一个例子来说明 C++ 中的 deque::assign 和 deque::at。 输出 Deque after assign: 10 10 10 10 10 Deque after reassigning from initializer list: 1 2 3 4 5 Element at index 2: 3 Deque after modifying index 2: 1 2 99 4 5 Accessing out-of-bounds index: Exception: deque::_M_range_check: __n (which is 10)>= this->size() (which is 5) 说明
示例 2让我们通过另一个例子来说明 C++ 中的 deque::assign 和 deque::at。 输出 Deque after assign with count and value: Hello Hello Hello Deque after assign with initializer list: Welcome to C++ Programming Element at index 1: to Deque after modifying element at index 2: Welcome to Modern Programming Accessing out-of-bounds index: Exception: deque::_M_range_check: __n (which is 10)>= this->size() (which is 4) 说明
示例 3让我们通过另一个例子来说明 C++ 中的 deque::assign 和 deque::at。 输出 Deque after assign (4 elements of value 7): 7 7 7 7 Deque after assigning from array range: 10 20 30 Value at index 1: 20 Deque after modifying index 1: 10 25 30 Accessing element at index 5: Exception: deque::_M_range_check: __n (which is 5)>= this->size() (which is 3) 说明
结论在 C++ 中,deque::at 和 deque::assign 在处理和交互 std::deque 元素方面具有不同的目的。由于 assign 函数是为批量操作而设计的,我们可以通过使用来自范围、重复值或初始化列表的新数据来重新初始化 deque,从而扩展和替换 deque 中的每个元素。但是,它通过边界检查提供精确的访问来提供安全的值检索或修改。通过为越界访问分配异常,并在保持 deque 大小不变的同时修改 deque 的完整结构,可以实现更安全的数据元素管理。了解它们之间的区别可以确保 std::deque 针对特定用例(例如重新初始化内容或安全地访问单个元素)尽可能有效地使用。 下一个主题C++ 中的割线法 |
C++ 是由 Bjarne Stroustrup 设计的广泛使用且强大的强类型语言,是 C 语言的改进版本。C++ 在处理系统资源方面具有相当大的能力,可用于过程式和面向对象编程,并允许在活动中应用...
阅读 6 分钟
C++ N元树镜像概述 树是计算机科学和编程中的基本数据结构,因为它们有效地组织和保护分层数据。在许多树种中,N元树是独特的,因为它们可以包含每个父节点的一个以上的子节点……
阅读 6 分钟
在 C++ 中,std::this_thread::sleep_until 函数是
阅读 4 分钟
开发二叉搜索树 (BST) 的前向迭代器,需要开发一个允许以特定顺序(通常是升序)遍历树的类。迭代器需要能够从 BST 中的最小元素遍历到最大元素。1. 理解二叉搜索...
阅读 4 分钟
勒让德猜想(Legendre's Conjecture)是一个陈述,即两个连续自然数的平方之间总是存在一个素数。在本文中,我们将讨论勒让德猜想及其算法和实现。数学陈述:在任意两个连续自然数的平方之间存在一个素数 p...
7 分钟阅读
概述 一种特殊的矩阵,它为从一边翻滚到另一边的每个正交元素保持一致性,这种矩阵被称为托普利兹矩阵。它以德国数学家奥托·托普利兹 (Otto Toeplitz) 的名字命名。这些矩阵表示法可以在多个不同的……
阅读 8 分钟
在 C++ 编程中,有效管理资源对于开发健壮且可维护的应用程序至关重要。事实上,涉及管理动态资源的类的 C++ 程序,如内存、文件描述符、网络套接字或任何其他系统级句柄,是常见的案例。然而,如果没有适当的护理,这些...
阅读 19 分钟
简介:负无穷大是 C++ 中一个非常罕见的数,它表示一个比任何其他实数都小得多的值。这个概念在许多计算环境中至关重要,尤其是在处理浮点算术的边缘情况、设计算法和进行数值分析时。
5 分钟阅读
亏数是正整数,其真约数(不包括数字本身)之和小于该数字。例如,8 是亏数,因为它的约数(1、2、4)之和为 7,小于 8。输入:10 输出:亏数 输入:12 输出:...
阅读 4 分钟
允许某人将字母翻译成数字的表称为 Polybius 方形。此表可以与接收者共享并随机生成以增加加密的难度。字母“i”和“j”通常合并到一个单元格中以……
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India