std::map 值为空,即使我分配了一个值
std::map value is empty even though i assigned a value?
我有一个像这样的标准::地图:
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
将货币对的第一个元素映射到第二个元素,反之则不然。
除此之外,在循环中应用映射根本没有意义,因为您已经可以通过迭代器访问这两个值。
相关文章:
- 当一个新对象被分配到它的地址时,对象是否必须被销毁
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 我如何通过引用将 c++ 字符串分配给另一个字符串
- 如何在 c++ 中将小数点后两位数的浮点数分配给另一个浮点数
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 将指针分配给另一个指针时会发生什么情况?
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- C++将一个指针分配给另一个指针时执行的类型检查
- 给定一个指向堆分配内存的指针,智能指针实现如何为其找到合适的释放函数?
- 关于字符数组,我正在尝试将数组中的每个字符分配给另一个值
- 使用动态分配将 char* 复制到另一个字符**
- C++为 void 指针分配一个字符串
- 是否可以使用分配器对象来释放另一个分配器分配的内存?
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 动态分配列表 - 创建一个函数,用于删除所有包含偶数值的元素
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- 在另一个分配的矩阵中为特定范围创建 cv::Mat 标头
- 2个不同的数组,一个分配