📜  C++ STL-Multiset.insert()函数(1)

📅  最后修改于: 2023-12-03 15:13:55.956000             🧑  作者: Mango

C++ STL-Multiset.insert()函数

介绍

multiset 是 C++ STL 提供的一个支持多个相同关键字的有序元素集合。它和 set 的用法类似,但是允许多个相同关键字的元素存在于集合中。

insert() 函数是 multiset 中的一个成员函数,用于将元素插入到集合中。如果该元素在集合中已经存在,insert() 函数会将其插入到相同关键字元素的末尾。

基本使用

insert() 函数有以下两种基本用法:

插入单个元素
#include <iostream>
#include <set>

using namespace std;

int main() {
    multiset<int> ms;
    ms.insert(1);
    ms.insert(2);
    ms.insert(3);
    ms.insert(3); // 多次插入相同元素
    ms.insert(4);
    
    // 输出集合中的元素
    for (auto it = ms.begin(); it != ms.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    return 0;
}

上述代码中,首先定义了一个 multiset,然后使用 insert() 函数分别插入了 1,2,3,3,4 五个元素。其中,3 被插入了两次,分别在集合的第三个位置和第四个位置。最后使用迭代器输出集合中的元素。

输出结果如下:

1 2 3 3 4
插入指定元素范围
#include <iostream>
#include <set>

using namespace std;

int main() {
    multiset<int> ms1{1, 2, 3};
    multiset<int> ms2{4, 5};
    
    ms1.insert(ms2.begin(), ms2.end());

    // 输出集合中的元素
    for (auto it = ms1.begin(); it != ms1.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    return 0;
}

上述代码中,首先定义了两个 multiset,其中 ms1 包含了 1,2,3 三个元素,ms2 包含了 4,5 两个元素。然后使用 insert() 函数将 ms2 中的元素插入到 ms1 中。

输出结果如下:

1 2 3 4 5
复杂度

在 multiset 中,insert() 函数的时间复杂度为 O(log n),其中 n 表示集合中元素的个数。

注意事项
  • multiset 中的元素是有序的。使用 insert() 函数插入的元素会被自动排序。
  • 插入元素时,需要保证该元素类型与集合中元素类型相同,否则会发生编译错误。
  • insert() 函数仅适用于关键字类型确定的 multiset。如果使用了自定义关键字类型,需要重载 < 运算符进行排序。