STL 映射:这个命令是什么意思
STL Map: What does this command mean?
我遇到了一个使用STL Map的竞争问题的解决方案,其中有一种我已经知道的不同类型的插入。我知道这些插入(及其差异):
Map[key] = value;
和Map.insert(make_pair(key,val));
但是这个我不知道它在做什么,只是它适用于我需要解决的问题:
std::map<int, int> freq;
int inp;
// ...
for (int i = 0; i < n; i++)
{
scanf ("%d", &inp);
freq [inp]++;
}
for (int i = 0; i < m; i++)
{
scanf ("%d", &inp);
freq [inp]--;
}
其中 freq 是带有一对整数的映射,inp 是普通整数。
当您使用查找运算符[]
并且键尚未在映射中时,将使用类型的值初始化值创建一个条目。在这种情况下,初始化的值int
初始化为零,初始值为 0。然后,++
或--
对该值进行操作。
我知道这些插入(及其差异):
Map[key] = value;
Map[key]
严格来说不是为了插入。 您也可以分配给该值。 作为副作用,postincr/postdecr 运算符确实会修改这些值。
因此,Map[key]++
是合法的,并且可以按照您的期望进行操作 - 增加存储在Map[key]
的值。 相当于:
Map[key] = Map[key] + 1
你能显示你在哪里初始化freq吗?,如果freq是一对整数,你需要使用"freq[inp].first"和"freq[inp].second"访问它们,据我所知,"pair"没有+或-运算符重载。
for (int i = 0; i < n; i++)
{
scanf ("%d", &inp);
freq [inp]++;
}
在这里,freq 存储在输入上找到整数的次数,如果输入为:0、0、0、1,1
地图 [0] = 3,地图 [1] = 2
for (int i = 0; i < m; i++)
{
scanf ("%d", &inp);
freq [inp]--;
}
一样,只是减法。
在这种情况下,您无法:
Map.insert(make_pair(key,val));
与:
std::map<int, int> freq;
你是说你的映射将有一个整数作为"键"和一个 intenger 作为"值",不,"对映射"只是一个映射,如果你初始化为 标准::地图>频率;
Map[Key] = Value;
如果这是一个竞争问题,我建议您只使用一个数组,将其大小设置为您需要的最大大小,并根据需要在 0 中初始化它。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在 c++ 中从执行的 shell 命令获取返回状态的安全方法是什么?
- 如何读取NM命令:NM选项-T和-U(未定义)是什么意思
- 在 pthread 中运行 shell 命令的良好和优化方法是什么?
- 当您添加 qmake 文件(.pro) 时,这些命令的含义是什么?
- 用c++编写命令行接口的更好方法是什么
- c中的fork()命令——这段简单代码的输出是什么
- 是什么原因导致Windows发送ID_HELP命令两次
- 用于链接的VC 11.0命令链接选项是什么
- 在整数中查找整数的命令是什么?
- c++ 这个参数在命令行中是什么意思? |grep MATCH >zoutmatchess
- GetCommandLine和WinMain API的命令行是什么?
- 命令中的"core"是什么:rm -f *~ core $(INCDIR)/*~?
- nm 命令输出中的"@@"符号是什么意思?
- BOOST程序选项命令行的格式是什么?
- qt构建系统中的jom是什么?如何从命令行调用jom来构建qt项目
- 查找硬件中正在使用的中断驱动程序的命令是什么?
- 当我向智能卡发送命令时,6e00是什么意思?
- 在多核 (Linux) 中运行进程的命令行参数是什么
- STL 映射:这个命令是什么意思