std::map 值为空,即使我分配了一个值

std::map value is empty even though i assigned a value?

本文关键字:一个 分配 map std      更新时间:2023-10-16

我有一个像这样的标准::地图:

std::map<std::string, std::string> imagePaths;

稍后在我的代码中,我给它一个值,如下所示:

imagePaths.insert(std::make_pair("Square.bmp", "Square"));

但是,当我循环遍历地图并显示第一个和第二个值时,如下所示:

for (auto iterator = imagePaths.begin(); iterator != imagePaths.end(); iterator++)
{
    std::cout << "Loaded > " << imagePaths[iterator->first] << " image path : " << imagePaths[iterator->second] << std::endl;
}

我得到输出:

加载>方形图像路径:

其余的,由于某种原因是空的,即使我给了它 "Square.bmp" 的值.


无法弄清楚我做错了什么。

您使用了错误的方式来显示地图内容。

试试这个:

for (auto iterator = imagePaths.begin(); iterator != imagePaths.end(); iterator++)
{
   std::cout << "Loaded > " << iterator->first << " image path : " << iterator->second << std::endl;
}

使用.find()方法使用的键查找值。在您的情况下,如果您执行此语句:

std::map<std::string, std::string>::const_iterator i = imagePaths.find("Square.bmp");
std::string value = it->second;

值将为"正方形"。

std::map

货币对的第一个元素映射到第二个元素,反之则不然。

除此之外,在循环中应用映射根本没有意义,因为您已经可以通过迭代器访问这两个值。

相关文章: