gpt4 book ai didi

c++ - 请帮助使用 MFC CMap(或 std::map)

转载 作者:行者123 更新时间:2023-11-28 03:56:02 25 4
gpt4 key购买 nike

C++ 菜鸟在这里。我正在尝试使用以下 key 行调整一些代码(这意味着它们不是唯一的代码,但它们是唯一对这个问题应该重要的代码)。顺便说一句,我在 Windows 上使用 Visual Studio 2010 C++ 编译器。

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::CAtlStringLPCSTR 不匹配的事实让我很困惑。 KEYARG_KEYVALUEARG_VALUE 到底是什么?为什么我需要所有四个,所有四个都可以不同吗?谢谢。

...
template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
class CMap : public CObject
...

注意:我可以在这里使用std::map(虽然我也没有用过);唯一不可协商的是 ATL::CAtlString - 我必须使用这种类型。如果您有任何问题,请告诉我。

最佳答案

IIRC 模板的四个参数在那里,因此您可以将一种类型放入并取回另一种(常量)类型。它在这里抛出 CAtlStrings,但它会返回 LPCTSTR。通常,您只需将相同的类型指定两次(例如,int、int、float、float 用于 int -> floats 的映射)。

Grr,现在那个额外的 L 真的让我很烦,它对 16 位 Windows 来说很棒,但是现在......只需要 PCSTR。 'L'是Windows编程的无用附录。

nFound 是从 map 出来的东西, map 映射到 UINT,所以 nFound 是一个 UINT。

关于c++ - 请帮助使用 MFC CMap(或 std::map),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3610686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com