2011-01-20 46 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」窗口中過多關注值,特別是如果您正在運行優化構建。

相關問題