a C++
noob here。我試圖調整一些代碼,使用以下代碼密鑰(意味着它們不是唯一的代碼,但它們是唯一應該對此問題重要的代碼)。順便說一下,我在Windows上使用Visual Studio 2010 C++編譯器。現在使用MFC CMap(或std :: map)的幫助請
CMap<ATL::CAtlString,LPCTSTR,UINT,UINT> mapForDuplicates; // "dict" definition
ATL::CAtlString strDescription = ... // let's just say it gets set to a value.
UINT nFound = 0; // What is this for???
BOOL bFound = mapForDuplicates.Lookup(strDescription, nFound);
mapForDuplicates[strDescription] = 1;
......我真的不想在這裏使用的UINT
,如bool
是我真正需要的。但是,我無法弄清楚CMap構造函數的所有參數究竟是什麼。當使用C#
時,我必須指定的是鍵的類型和值的類型。 ATL::CAtlString
與LPCSTR
不符的事實讓我很困惑。 KEY
,ARG_KEY
,VALUE
和ARG_VALUE
究竟是什麼?爲什麼我需要所有四個,四個都可以不同?謝謝。
...
template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
class CMap : public CObject
...
注:我可以用std::map
這裏,而不是(雖然我也沒有用過它);唯一不可轉讓的是ATL::CAtlString
- 我必須使用這種類型。如果您有任何問題,請告訴我。
謝謝,這很有幫助。當類型確實不同時,它是否使用簡單的演員?此外,'LPCSTR' thingy ...因爲我沒有迭代鍵,我應該可以將它改爲'ATL :: CAtlString',對吧? – 2010-08-31 16:04:39
Atl從AtlString返回PCTSTR的速度很快。 CMap不允許你編輯密鑰,所以它想讓你回傳const。你可以嘗試使第二個參數爲一個常量AtlString,但PCTSTR就好了。 – 2010-08-31 16:26:36