gpt4 book ai didi

c++ - 调试时检查 map 的内容

转载 作者:可可西里 更新时间:2023-11-01 17:58:47 31 4
gpt4 key购买 nike

为了调试,我需要查看映射的内容(std::unordered_mapstd::map),Eclipse CDT 调试器没有提供给我以可读的形式,例如{1:2, 3:4, ...}

调试时检查 map 内容的最佳方法是什么?

我是否必须返回使用打印语句进行调试?如果是,将任何 map 的内容打印为字符串的简洁宏或函数看起来如何?

最佳答案

Do I have to go back to debugging with print-statements? If yes, how would a concise macro or function look like that prints the content of any map as a string?

我不知道你是否知道 - 我不使用 Eclipse,但打印 map 非常简单:

template <typename K, typename V>
std::ostream& operator<<(std::ostream& os, const std::map<K, V>& m)
{
os << "{ ";
for (typename std::map<K, V>::const_iterator i = m.begin(); i != m.end(); ++i)
{
if (i != m.begin()) os << ", ";
os << i->first << ": " << i->second;
}
return os << " }";
}

然后你可以使用<< my_map .请注意,在大型代码库中,其他人可能也有同样的“聪明”想法,因此您可能希望将您的辅助函数放在您自己的命名空间中,或者给它一个更本地化的名称。东西周边的选择"{ "" }"", "分隔符是任意的,可能不适合所有用户——有些人可能想要自动字符串引用/转义等,所以把它放在一个全局命名空间中在最好的时候是可疑的,在这种情况下它甚至可能被保留以可能包含在未来的 C++ 标准或其他东西——毕竟,它有点喜欢将你自己的名字添加到 std:: 中。命名空间。如果您关心,请检查标准。

关于c++ - 调试时检查 map 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13912246/

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