标准::地图未按预期运行
std::map not behaving as expected
我正在尝试使用std::map
模板,但无法让它工作。从互联网上的研究中,我得出了这个解决方案并将文件重定向到输入流,这是代码:
typedef map<char*, int> wc;
int main() {
int c;
char cc[75], nombre[75];
wc m;
scanf("%d", &c);
while (c--) {
scanf("%s %[ a-zA-Z]", cc, nombre);
++m[cc]; // This should work
printmap(m);
}
}
打印地图是一个只打印地图对象的函数。这是我的文件输入.txt
3
Spain Donna Elvira
England Jane Doe
Spain Donna Anna
当我执行程序时,输出是:
Spain -> 1
England -> 2
Spain -> 1
我的期望是:
Spain -> 2
England -> 1
映射到其出现的次数的国家/地区的出现次数
作为我上面评论的解决方案,您提供的代码C++版本:
typedef map<std::string, int> wc;
int main() {
int c;
string cc, nombre;
wc m;
std::cin >> c;
while (c--) {
std::cin >> cc;
std::getline(std::cin, nombre);
m[cc] += 1; // This should work
}
printmap(m);
}
http://ideone.com/2JP82
首先:std::map
根据代码中的键对数据进行排序,char*
,它指向char cc[75]
。因此,当您替换 cc
中的文本时,地图的键发生了变化,这破坏了一切。 地图的键永远不能更改。 由于我们使用的是C++,因此您根本不应该使用char[]
;改用std::string
,它(因为它是"值类型")将使一切神奇地工作。我不知道它以前是如何工作的,因为您没有显示printmap
功能。
第二:你每次读一行时都会打电话给printmap
,而且由于map
无法打印"最后添加的东西",所以这个想法根本没有意义。printmap
调用可能应该打印整个地图,并且位于循环之外。
第三:不要用scanf
,不安全。使用流:std::cin >> cc
用于阅读单个单词,std::getline(std::cin, nombre)
用于阅读行上剩余的内容。 这样,如果有人输入该行,代码就不会崩溃(最长的国家名称和最长姓氏的来源)
Krungthepmahanakornamornratanakosinmahintarayuttha-yamahadilokphopnopparatrajathaniburiromudomrajaniw-esmahasatharnamornphimarnavatarnsathitsakkattiyavi-sanukamprasit Wolfeschlegelsteinhausenbergerdorffvortschaferswesenchafewarenwholgepflegeunzenvonangereifenduchihrraubgiriigfeindtausendjahresvorandieerscheinenbanderechiffgebrauchlichtalsseinursprungvonkrrthinzwischensternartigraumaufdersuchebtbewohnbarplanetenkreisedrehensichundstandigmenshlichkeittkonntevortpflanzeslamdlichfreudeundruhemitnichteinfurchrintlligentgeschopfsvonhinzwischenster
相关文章:
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么不;名字在地图上是按顺序排列的吗
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- 基于多个条件处理地图中的所有元素
- 如何在MS Visual Studio 2019中运行QT UI
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 与地图C++相比,无序地图运行异常缓慢
- 使用地图找不到可能的运行时错误
- 标准::地图未按预期运行
- c++地图值不改变运行时,我做错了什么