C++ Multimap 中的 insert函数

首页 / C++入门教程 / C++ Multimap 中的 insert函数

C++多重映射 insert()用于将一个元素或一系列元素插入到一个多重映射中。

insert - 语法

single element (1)     pair<iterator,bool> insert (const value_type& val);   //until C++ 11

 hint (2)          iterator insert (iterator position, const value_type& val);   //until C++ 11

range (3)	template <class InputIterator>
  		   void insert (InputIterator first, InputIterator last);        //until C++ 11

single element (1)  pair<iterator,bool> insert (const value_type& val);
		  template <class P> pair<iterator,bool> insert (P&& val); //since C++ 11
            
hint (2)	iterator insert (const_iterator position, const value_type& val);
		   template <class P> iterator insert (const_iterator position, P&& val);

range (3)	template <class InputIterator>
  		   void insert (InputIterator first, InputIterator last); //since C++ 11

initializer list (4)	void insert (initializer_list<value_type> il);   //since C++ 11

insert - 参数

val           - 要插入multimap的键值。

position - 提示插入元素的位置。

first         - 要插入的参数的开始。

last          - 要插入的参数的末尾。

il               - 初始化列表。

insert - 返回值

如果插入了单个元素,则它将迭代器返回到将新元素插入到multimap中的位置。

链接:https://www.learnfk.comhttps://www.learnfk.com/c++/cpp-multimap-insert-function.html

来源:LearnFk无涯教程网

或者,如果元素带有提示插入,则它将返回一个迭代器,该迭代器指向将新元素插入到multimap中的位置。

insert - 例子1

让我们看一下将元素插入multimap的简单示例:

#include <iostream>
#include <map>

using namespace std;

int main() {
   multimap<char, int> m = {
            {'a', 1},
            {'b', 2},
            {'c', 3},
            };

  //inserting new element
   m.insert(pair<char, int>('b', 4));
   m.insert(pair<char, int>('c', 5));

   cout << "Multimap contains following elements" << endl;

   for (auto it = m.begin(); it != m.end(); ++it)
      cout << it->first << " = " << it->second << endl;

   return 0;
}

输出:

Multimap contains following elements
a = 1
b = 2
b = 3
c = 4
c = 5

在上面的示例中,它只是插入具有给定键值对的元素。

insert - 例子2

让我们看一个简单的示例,将元素插入指定位置:

#include <iostream>
#include <map>

using namespace std;

int main(void) {
   multimap<char, int> m = {
            {'b', 2},
            {'c', 3},
            {'d', 4},
            };

   //inserting element with the given position
   m.insert(m.begin(), pair<char, int>('a', 1));  
   m.insert(m.end(), pair<char, int>('d', 5));

   cout << "Multimap contains following elements" << endl;

   for (auto it = m.begin(); it != m.end(); ++it)
      cout << it->first << " = " << it->second << endl;

   return 0;
}

输出:

Multimap contains following elements
a = 1
b = 2
c = 3
d = 4
d = 5

在以上示例中,将元素插入到定义的位置,即,在开始元素{'a',1}中插入元素,在结束元素{'d',5}中插入元素。

insert - 例子3

让我们看一个简单的示例,将一个multimap的元素插入另一个:

#include <iostream>
#include <map>

using namespace std;

int main() {
   
   multimap<char, int> m1 = {
            {'a', 1},
            {'b', 2},
            {'a', 3},
            {'d', 4},
            {'b', 5},
            };

multimap<char, int> m2; //creating new multimap m2
m2.insert(m1.begin(), m1.end());   //inserting the elements of m1 to m2 from begin to end

   cout << "Multimap contains following elements" << endl;

   for (auto it = m2.begin(); it != m2.end(); ++it)
      cout << it->first << " = " << it->second << endl;

   return 0;
}

输出:

Multimap contains following elements
a = 1
a = 3
b = 2
b = 5
d = 4

在上面的示例中,multimapm1具有五个元素,而multimapm2为空。 insert()用于从m1的开头到m1的结尾插入m1到m2的元素,并显示m2多重映射的内容。

insert - 例子4

让我们看一个插入元素的简单示例:

#include <iostream>
#include <map>

using namespace std;

int main() {
   multimap<int , string> m = {
            {1, "Java"},
            {2, "C++"},
            {3, "SQL"},
            };

   m.insert({{4,"VB"}, {3, "Oracle"}});

   cout << "Multimap contains following elements" << endl;

   for (auto it = m.begin(); it != m.end(); ++it)
      cout << it->first << " : " << it->second << endl;

   return 0;
}

输出:

Multimap contains following elements
1 : Java
2 : C++
3 : SQL
3 : Oracle
4 : VB

在上面的示例中,使用了另一种形式的insert()函数将元素插入multimap。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

机器学习40讲 -〔王天一〕

玩转Git三剑客 -〔苏玲〕

大规模数据处理实战 -〔蔡元楠〕

分布式技术原理与算法解析 -〔聂鹏程〕

容器实战高手课 -〔李程远〕

手把手带你写一个Web框架 -〔叶剑峰〕

全链路压测实战30讲 -〔高楼〕

自动化测试高手课 -〔柳胜〕

结构沟通力 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)