2011-01-20 48 views
0

我有一个错误我想不出它occues在以下方面:插入地图为载体失败第二次

我实际上可以使用地图矢量它:
map<vector<string> , vector<string> > parameterMap;

因为我需要他们几个(多少上运行时决定),我把它们放在一个列表(矢量):
vector<map<vector<string> , vector<string> > > listedParameterMap;

插入地图在载体中:在方法的头部 矢量声明
listedParameterMap.insert(listedParameterMap.end(), 1, parameterMap);

此过程正常工作的第一次。第二次(地图填充正确)它没有工作。
我注意到一件事:我给了地图的大小:
cout << "listedParameterMap " << listedParameterMap.size();
它显示大小是第二时间后,手表它说仍然。 它也显示了我的有线内容:

截图: alt text

Last应包含的东西看起来像First 其插入被defently正确填写第二张图。 同为载体:part1_inputpart2_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(); 
} 

我真的希望任何想法,为什么发生这种情况...



编辑:

“解决方案”正在打印出来。观察窗口不显示正确的值。这意味着我的问题是在其他地方引起的。但是这里是令人惊叹的。感谢任何人试图帮助我!

+7

请定义“它不工作”。 – 2011-01-20 12:47:23

+2

另外,请考虑使用typedefs! – 2011-01-20 12:48:01

回答

1

我希望看到一个测试,你可以从你的收藏中输出一些东西,看看你是否看到你认为你应该看到的东西。其实为什么不写一个适当的单元测试呢?

您按价值传递了很多收藏。这可能会非常昂贵,但是另外,您可能正在更新的内容是您认为实际更新内容的副本,然后在原始内容中看不到结果。

我不会在Visual Studio的“watch”窗口中过多关注值,特别是如果您正在运行优化构建。

相关问题