我有一个错误,我无法确定它在下面的位置:
我正在使用带有矢量的地图:
map<vector<string> , vector<string> > parameterMap;
因为我需要其中一些(在运行时决定了多少)我将它们放入一个列表(向量):
方法头上的矢量声明:
vector<map<vector<string> , vector<string> > > listedParameterMap;
将地图插入向量:
listedParameterMap.insert(listedParameterMap.end(), 1, parameterMap);
这个程序第一次正常工作。第二次(地图填写正确)它没有工作。
我注意到了一件事:我给出了地图的大小:
cout << "listedParameterMap " << listedParameterMap.size();
第二次显示尺寸 2 后,观看表示仍然 1 。
它还向我展示了有线内容:
截图:
Last
应包含类似First
的内容
插入的第二张地图被正确填写。
向量相同:part1_input
和part2_output
代码:
for (unsigned int index = 0; index < part1_input.size(); index++) {
map<vector<string> , vector<string> > parameterMap;
parameterMap.insert
(pair<vector<string> , vector<string> > (part1_input[index], part2_output[index]));
listedParameterMap.insert(listedParameterMap.end(), 1, parameterMap);
cout << "listedParameterMap " << listedParameterMap.size();
}
我真的很感激为什么会发生这种情况......
修改
“解决方案”正在打印出来的东西。监视窗口未显示正确的值。这意味着我的问题是由其他地方引起的。但这是在这里。感谢有人试图帮助我!
答案 0 :(得分:1)
我希望看到一个测试,您可以从集合中输出一些内容,看看您是否看到了您认为应该看到的内容。实际上为什么不写一个合适的单元测试?
你按价值传递了很多收藏品。这可能非常昂贵,但此外,您可能正在更新某些内容,这些内容是您认为实际更新的内容,然后未在原始内容中查看结果。
我不会过多关注Visual Studio的“监视”窗口中的值,特别是如果您运行的是优化版本。