gpt4 book ai didi

C++ Map基于变量键返回类对象

转载 作者:行者123 更新时间:2023-11-30 04:05:55 25 4
gpt4 key购买 nike

我重新学习了 map 结构,我正在尝试使用一个,但似乎无法解决一个问题。

我试过下面的代码:

map<string, valuePair> translator;

类 valuePair 只是 2 个对象(字符串和数字)的组合。

我正在为 map 赋值

translator[currentWord] = valuePair(stateNo, "state");

其中currentWord是一个可变字符串,stateNo是一个int。

现在我想从 map 中取回 valuePair 数字值,但似乎做不到。这是我试图访问变量 x 的监 window 口的屏幕截图。 http://i.imgur.com/m3MOgi2.png

这些都是我设法在网上找到的返回值的方法,但似乎都没有用。如您所见,键“a”在 map 中。我做错了什么?

[编辑] 谢谢大家,我使用了你们在评论中给出的提示,发现它实际上按照我预期的方式工作——translator["a"].x 打印出我需要的值。不过,我没有任何可标记为“正确答案”的内容,而且我现在不确定如何处理此线程:/

最佳答案

正如 Jonathan Henson 在评论中发表的那样,与调​​试器输出相比,您最好发布自己的代码。理想情况下,您需要一个最小的示例来重现您遇到的错误。

根据调试器输出,我想知道您是否遇到了范围问题——您正试图访问您定义的范围之外的 map 数据。虽然没有看到源代码,但没有办法知道。

这是一个工作示例,它可以准确地完成您想要做的事情。唯一的修改是我为 valuePair 和 c++ 11 初始化程序列表使用了一个结构。这不会影响 map 访问代码,但您可能需要打开 c++ 11 支持才能对其进行编译。

作为第一步,请在您的调试器中检查它,看看您是否遇到了同样的困难。如果是这样,您的问题是调试器或调试器设置,而不是您的代码。

如果调试器适用于示例代码(在下面发布),请逐渐将我的代码转换为您的代码(进行最小的更改、构建,然后查看它是否仍然有效)。这是学习语言精髓的一种非常有用的方法。

#include <iostream>
#include <map>
#include <string>

using namespace std;

struct valuePair
{
int num;
string str;
};



int main()
{
map<string, valuePair> translator;
translator["a"] = {0,"bla"};
translator["b"] = {1, "alb"};
translator["c"] = {2, "lab"};
valuePair res = translator["c"];
cout << "c:" << res.num << "," << res.str << "\n";
res = translator.at("b");
cout << "b:" << res.num << "," << res.str << "\n";
res = translator.find("a")->second;
cout << "a:" << res.num << "," << res.str << "\n";
return 0;
}

关于C++ Map基于变量键返回类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23085433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com