這是一個非常簡單的問題,我敢肯定,但我會很感激幫助。 :)幫助半複雜的C + +分配
這裏是我的變量在.h文件:
map<int, map<int, map<int, CString>*>*> batch;
這裏就是我試圖分配一個值:
((*((*(batch[atoi(transnum)]))[1]))[atoi(*docnum)]) = page;
我增加了一些額外的括號,而試圖以這出確保derefs以正確的順序處理 - 不幸的是,它仍然無法正常工作。運行此行時,我的應用程序崩潰。我把它封裝在一個try {} catch {}中,但是沒有出現異常。我不經常使用C++,並且想知道是否有人能告訴我我做錯了什麼。
這裏有我想要的模型之間的關係:
交易確認碼(整數)的列表,需要通過鍵排序。
對於每個事務號碼,我有兩個類型的文檔,付款和發票(由0表示的桶,然後在上述我的數據結構1分別)
在每種類型的桶,有可以一個或多個文檔,這些文件需要由ID(文檔ID)進行排序
每個文檔ID鏈接到由逗號分隔的F列表的字符串iles在文件系統上進行處理。
如果您認爲有更好的數據結構可供使用,我很樂意聽到它。
編輯:我知道有很多更好的方法來做到這一點。這種情況是,我收到了一堆令人恐懼的MFC錯誤的C++代碼,並告訴我昨天做了一些事情。它基本上歸結爲在那裏獲得數據結構,將其加載並將其輸出到其他地方。當我問這個問題時,我只是想盡快把它趕出去。我欣賞設計建議。
我會擺脫CString並使用std :: string。地圖(和地圖的子部分)是否已經填充?您可能試圖訪問/分配空位。你想達到什麼目的?這對我來說看起來很可怕。 – Tim 2009-09-01 18:47:54
也 - 什麼是docnum和transnum? – Tim 2009-09-01 18:49:55
我同意蒂姆。每當你看到這樣的嵌套容器類時,這是一個好兆頭,你需要創建自己的類來表示你定義的一些或全部數據結構。 – rmeador 2009-09-01 18:50:07