21xrx.com
2024-11-22 10:07:44 Friday
登录
文章检索 我的文章 写文章
C++ Map的修改方法
2023-07-03 07:48:31 深夜i     --     --
C++ Map 修改方法 insert [] erase 迭代器

C++ Map是一种关联式容器,其中的元素以键值对的形式存储。在某些情况下,我们需要对Map中的元素进行修改。接下来,我们将介绍一些常见的Map修改方法。

1. 通过下标修改

通过Map的下标运算符[]来修改元素是最常用的方法之一。例如,我们有一个Map对象m,并且想将键为key的元素的值修改为value,则可以使用以下代码:


m[key] = value;

如果key不存在,则将创建一个新的元素,并将其值设置为value。

2. 通过迭代器修改

Map提供了迭代器来遍历其元素。我们可以使用迭代器来访问并修改Map中的元素。例如:


map<int, string>::iterator it = m.find(key);

if (it != m.end())

  it->second = value;

首先,使用find函数找到键为key的元素的迭代器it。如果找到了该元素,则可以通过迭代器的second成员(对应于键值对中的值)来修改元素。

3. 通过insert或emplace修改

如果我们要添加一个新元素或修改一个已有元素,可以使用insert或emplace函数。例如,我们想在Map m中添加一个键为key,值为value的元素,可以使用以下代码:


m.insert(make_pair(key, value));

或者,使用emplace函数:


m.emplace(key, value);

如果该键值对已经存在,则insert函数不会执行任何操作,而emplace函数将覆盖原有的值。

4. 通过erase修改

Map提供了erase函数来删除元素,它返回被删除元素的数量。在一些情况下,我们可以利用这个函数来修改元素。例如,我们要将Map m中的键为key的元素的值修改为value,则可以使用以下代码:


if (m.erase(key)) {

  m.insert(make_pair(key, value));

}

首先,使用erase函数删除该键的元素。由于该函数返回的是被删除元素的数量,因此如果该键存在,则返回的值为1。我们可以根据返回值来判断是否执行了删除操作。最后,使用insert函数将新的键值对添加到Map中。这个过程实际上是修改了原有元素的值。

以上是几种常见的Map修改方法。需要根据具体情况选择合适的方法。在使用下标运算符修改元素时,需要注意该键是否存在,避免发生不必要的错误。另外,如果 Map 存储大对象,使用 emplace和 insert 而不是 [] 运算符或函数调用,会更高效。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复