C++ multimap::insert() 函数



C++ 的std::multimap::insert()函数用于向 multimap 容器添加元素。它将键值对插入到 multimap 中,并根据键保持排序顺序。如果键已存在,它不会覆盖现有值,从而保留 multimap 的唯一键属性。此函数返回一个指向已插入元素的迭代器,方便进一步操作。

此函数有 4 个多态变体:插入单个元素、带提示的插入、范围插入和初始化列表插入(您可以在下面找到所有变体的语法)。

语法

以下是 std::multimap::insert() 函数的语法。

iterator insert (const value_type& val);
or
iterator insert (const_iterator position, const value_type& val);
or
void insert (InputIterator first, InputIterator last);	
or
void insert (initializer_list<value_type> il);

参数

  • val − 表示要插入的值。
  • position − 表示插入元素的位置提示。
  • first, last − 指定元素范围的迭代器。
  • il − 表示初始化列表对象。

返回值

此函数返回一个指向新插入元素的迭代器。

示例

让我们看下面的例子,我们将插入单个键值对。

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a;
    a.insert(std::make_pair(1, "A"));
    a.insert(std::make_pair(2, "B"));
    for (const auto& pair : a) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

输出

以上代码的输出如下:

1: A
2: B

示例

考虑下面的例子,我们将使用提示版本并插入一个元素。

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a;
    auto x = a.begin();
    x = a.insert(x, std::make_pair(1, "TutorialsPoint"));
    a.insert(x, std::make_pair(2, "TP"));
    for (const auto& pair : a) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

输出

以上代码的输出如下:

1: TutorialsPoint
2: TP

示例

在下面的例子中,我们将使用范围版本并插入一个元素。

#include <iostream>
#include <map>
#include <vector>
int main()
{
    std::multimap<int, std::string> a;
    std::vector<std::pair<int, std::string>> x = {{1, "AB"}, {2, "BC"}, {2, "CD"}};
    a.insert(x.begin(), x.end());
    for (const auto& pair : a) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

1: AB
2: BC
2: CD

示例

下面是使用 emplace() 函数与 insert() 函数一起使用的例子。

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a;
    a.insert(std::pair<int, std::string>(2, "HI"));
    a.emplace(1, "HELLO");
    for (const auto& pair : a) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

1: HELLO
2: HI
multimap.htm
广告