2024年1月20日发(作者:)

map容器的insert用法总结

map容器是C++ STL库中的一种关联容器,它以键值对(key-value

pair)的形式存储数据,并且按照键的顺序进行自动排序。插入操作是map容器中的一项重要操作,本文将详细介绍map容器的insert用法。

1.插入单个键值对

可以使用insert函数将一个键值对插入到map容器中。插入操作的时间复杂度为O(log n),其中n为map容器中的元素个数。具体用法如下:

````cpp

std::map myMap;

(std::pair(key, value));

```

或者使用C++11新特性的初始化列表:

````cpp

std::map myMap;

({key, value});

```

2.插入键值对序列

可以使用insert函数将一个键值对序列插入到map容器中。插入操作的时间复杂度为O(k log n),其中k为插入序列的元素个数,n为map容器中的元素个数。具体用法如下:

````cpp

std::map myMap;

(std::make_pair(key1, value1));(std::make_pair(key2, value2));(std::make_pair(key3, value3));//...

```

或者使用C++11新特性的初始化列表:````cpp

std::map myMap;

({key1, value1});

({key2, value2});

({key3, value3});

//...

```

3. 插入另一个map容器中的键值对

可以使用insert函数将另一个map容器中的键值对插入到当前map容器中。插入操作的时间复杂度为O(k log n),其中k为插入序列的元素个数,n为map容器中的元素个数。具体用法如下:

````cpp

std::map myMap1;

std::map myMap2;

((, ();

```

4.使用迭代器插入键值对

可以使用insert函数使用迭代器指定的位置插入键值对。插入操作的时间复杂度为O(log n),其中n为map容器中的元素个数。具体用法如下:

````cpp

std::map myMap;

std::map::iterator it = (;

(it, std::pair(key, value));

```

5.插入已存在的键值对

````cpp

std::map myMap;

myMap[key] = value; // 更新已存在的键值对的值

```

需要注意的是,当插入键值对时,map容器会根据键的顺序进行自动排序。如果需要按照自定义的排序规则进行排序,可以使用自定义的比较函数作为map容器的模板参数。

下面是一些insert函数的使用示例:

```cpp

#include

#include

int mai

std::map myMap;

//插入单个键值对

(std::pair(1, "one"));//插入键值对序列

(std::make_pair(2, "two"));

(std::make_pair(3, "three"));

(std::make_pair(4, "four"));

// 插入另一个map容器中的键值对

std::map anotherMap;

(std::make_pair(5, "five"));

(std::make_pair(6, "six"));

((, ();

//使用迭代器插入键值对

std::map::iterator it = (;

(it, std::make_pair(0, "zero"));

//插入已存在的键值对

myMap[4] = "updated";

// 输出map容器中的键值对

for (const auto& pair : myMap)

std::cout << << ": " << << std::endl;

}

return 0;

```

运行以上代码,输出结果为:

```

0: zero

1: one

2: two

3: three

4: updated

5: five

6: six

```

总结起来,map容器的insert函数可以实现单个键值对、键值对序列、另一个map容器中的键值对、迭代器指定位置插入键值对以及更新已存在的键值对等操作。根据具体的需求,可以选择合适的insert函数重载版本来完成插入操作。