C++ multimap erase() 函数

2024年8月30日 | 阅读4分钟

C++ multimap erase() 函数用于从 multimap 容器中移除与给定键值关联的单个元素或一系列元素。因此,大小将减少已移除元素的数量。

语法

参数

position: 指向要从 multimap 中移除的单个元素的迭代器。

k: 要从 multimap 中移除的元素的键。

first: 要擦除范围的起始。

last: 要擦除范围的结束。

返回值

它返回一个指向被删除元素之后元素的迭代器,或者返回被删除元素的数量。

复杂度

erase(position): 摊销常数时间。

erase (val): 对容器大小取对数时间。

erase(first,last): 在 first 和 last 之间距离上呈线性时间。

迭代器有效性

指向被函数移除的元素的迭代器、引用和指针将失效。

所有其他迭代器、指针和引用保持其有效性。

数据竞争

容器被修改。

被移除的元素被修改。在容器中迭代范围是不安全的,尽管并发访问其他元素是安全的。

异常安全

此函数不会抛出异常。

如果指定了无效范围或位置,则会导致未定义行为。

示例 1

让我们看一个使用迭代器擦除元素的简单示例。

输出

Before erasing the element: 
a => 100
b => 200
b => 300
c => 400

After erasing the element: 
a => 100
b => 300
c => 400

在上面的示例中,元素通过迭代器 it 被擦除。

示例 2

让我们看一个使用给定键值擦除 multimap 元素的简单示例

输出

Before erasing the element: 
a => 100
b => 200
b => 300
c => 400

After erasing the element: 
a => 100
c => 400

在上面的示例中,erase(key) 函数从 multimap 中擦除了所有键为 'b' 及其值的元素。

示例 3

让我们看一个使用给定范围擦除元素的简单示例

输出

Before erasing the element are: 
Size is: 4
a => 100
b => 200
b => 300
c => 400

After erasing the element are: 
Size is: 0

在上面的示例中,erase (first, last) 函数用于擦除给定范围(即从头到尾)的元素。

示例 4

让我们看一个从 multimap 中擦除所有奇数的简单示例

输出

After erasing odd numbers, elements are:
 2, two
 4, four
 6, six

在上面的示例中,所有奇数都被擦除,并显示偶数。

下一个主题C++ multimap