c++ - 在地图中寻找最小的数字总是打印 0
问题描述
我正在编写一个程序来查找地图中的最小数字,但它没有按预期工作。预期的结果是 2,但它总是打印 0。
#include <iostream>
#include <map>
using namespace std;
int main()
{
std::map<int, int> myMap = { {1, 3} , {2, 5}, {3, 22}, {4, 2} };
int temp = myMap[0];
for (int i = 1; i <= 4; ++i) {
if (myMap[i] < temp) {
temp = myMap[i];
}
}
cout << "smallest number: " << temp << std::endl;
}
解决方案
事后看来,如果不存在(使用有效负载value-initialized ;即在您的情况下为 0 )中插入std::map
缺失元素的功能,例如您使用语句的情况std::map
int temp = myMap[0]; // myMap[0] is value-initialised, i.e. is 0.
,可能不是一个好主意。它还带有[]
运营商没有的缺点const
。
但是,从 C++14 开始,您可以简单地编写
auto it = std::min_element(
myMap.begin(),
myMap.end(),
[](const auto& l, const auto& r) { return l.second < r.second; }
);
其次是
std::cout << "smallest number: " << it->second << std::endl;
产生价值。检查当然it
是有效的 - 这样它就可以在空容器上工作。
推荐阅读
- java - IntelliJ IDEA - 错误:发生 JNI 错误,请检查您的安装并重试
- r - 部署 R Shiny 应用程序后,ggplot2 字体大小缩小(有时)
- html - 单击鼠标时将光标从抓取更改为抓取?
- java - 尝试从文本区域写入文件并从文件写入文本区域
- php - 无法加载模型与 Eloquent 的关系
- html - 移动导航 BG 颜色/失火汉堡菜单
- python - 锁定不锁定多处理
- php - 使用 PHP 重复事件生成的 Jquery 错误
- rational-team-concert - 如何找到自定义 RTC 属性的 AttributeID?
- identityserver4 - 由于缺少属性,在 identityserver4 上添加客户端失败