gpt4 book ai didi

c++ - 我需要打印一个结构的元素,它本身就在 c++ 的 map 中

转载 作者:行者123 更新时间:2023-12-05 01:24:41 31 4
gpt4 key购买 nike

我在 C++ 中有一个这样的包含:

struct my_struct
{
time_t time;
double a, b, c, d;
}
typedef std::map<std::string, std::vector<my_struct> Data;

在我的代码中(用于调试问题)我想为特定键打印数据中的一些值。我不记得语法并且一直有错误。

这是我尝试过但没有成功的语法:

for (const auto& [key, value] : inputData) 
{
if (key=="mytest")
{
std::cout << '[' << key << "] = " << value.a << endl;
}
}

我也试过:

  for(const auto& elem : inputData)
{
if (elem.first=="mytest")
{
cout<<elem.second.a>>endl;
}
}

谢谢你的帮助

最佳答案

正确查看以下行:

typedef std::map<std::string, std::vector<my_struct> Data;

如您所见,std::map 的第二个元素是 my_struct 的列表.现在在这里:

for (const auto& [key, value] : inputData)
{
if (key == "mytest")
{
std::cout << '[' << key << "] = " << value.a << std::endl;
}
}

.. value.a没有意义,因为 std::vector<my_struct>::a不是东西。

所以替换value.a与:

value[0].a; // Replace 0 with the index of element you want to access

或者打印value中的每一个元素:

for (const auto& [key, value] : inputData)
{
if (key == "mytest")
{
std::cout << '[' << key << "] = ";
for (auto& i : value)
{
std::cout << i.a << " : ";
}
std::cout << std::endl;
}
}

您可以根据自己的选择使用 2 个选项中的任何一个。

关于c++ - 我需要打印一个结构的元素,它本身就在 c++ 的 map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71286633/

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