debug 模式下如何查看map或者vector的元素值

m
miked
楼主 (北美华人网)
std::vector<string> m_v; std::map<string, int> m_m; m_m.insert(std::make_pair("earth", 1)); m_m.insert(std::make_pair("moon", 2)); m_m["sun"] = 3; 请问如果debug模式下,如何能观看m_m的值。 我用m_m[0], 或者m_m["earth"] 都提示如下错误 no operator matches these operands
颜即是正义
用iterator输出
for (std::map<string,int>::iterator it = begin(m_m); it != end(m_m); ++it) { std::cout << it->first << " => " << it->second << '\n'; }
m
miked
用iterator输出
for (std::map<string,int>::iterator it = begin(m_m); it != end(m_m); ++it) { std::cout << it->first << " => " << it->second << '\n'; }

颜即是正义 发表于 2022-07-29 16:50

请问为何不能在debug窗口用 m_m.begin()->first 呢?
我想在调试的时候,观察m_m的元素。从而研究算法的每一步是怎么进行的。
你这个for一口气把所有元素都输出,好像还不能在immediate window执行。
m
miked
用iterator输出
for (std::map<string,int>::iterator it = begin(m_m); it != end(m_m); ++it) { std::cout << it->first << " => " << it->second << '\n'; }

颜即是正义 发表于 2022-07-29 16:50

定义了it后,在程序中it++是可行的。 但是在debug窗口中,如果执行it++就会提示 no operator "++" matches these operands
这是为什么?为什么调试窗口不能执行用户想执行的命令呢?
m
miked
为什么在c++中调试一个map和vector,这么费劲?
O
Ocarina
华人网居然这么上进了
B
Banana.Republic
赶紧学Carbon吧,新鲜出炉的
h
host
就像楼上说的,用iterator多打印几次,就能看出哪里不对了。从来没用过debug窗口。