【问题标题】:Why does size of map changes on comparison? [duplicate]为什么地图的大小在比较时会发生变化? [复制]
【发布时间】:2021-01-10 07:17:43
【问题描述】:

使用下面的C++代码在比较前后打印不同大小的地图。

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{
    string str1 = "abc", str2 = "def";
    map<char, int> mp;
    for(char c: str1) mp[c]++;
    cout << "Size of map: " << mp.size() << endl;
    for(char ch: str2) {
        if(mp[ch]) {
            // do something...
        }
    }
    cout << "Size of map: " << mp.size() << endl;
    return 0;
}

为什么检查key 是否存在于map 中会增加map 的大小?

【问题讨论】:

  • 如果你将比较隔离到一个函数中,该函数通过const&amp; 获取地图,你会得到一个compilation error 而不是一个无声的错误。

标签: c++


【解决方案1】:
if(mp[ch])

这将使用密钥ch 调用map::operator[]

如果键与map 中的元素匹配,它将返回该元素的值。 如果 key 与 map 中的任何元素都不匹配,则该函数使用该 key 插入一个新元素并返回对其映射值的引用。

您可以使用map::find 来检查密钥是否存在于地图中。

【讨论】:

  • 您所指的“函数”是索引运算符,如果您想将其添加到答案中,则为 operator[]
  • 好多了,谢谢。
猜你喜欢
  • 2018-05-01
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
相关资源
最近更新 更多