gpt4 book ai didi

c++ - 在 std::map 中插入新对

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:12:00 26 4
gpt4 key购买 nike

我有两个列表和一个名字要查找。如果要查找的名称不在第一个列表中,那么它可能在格式略有不同的第二个列表中。给出了两种格式之间的转换函数。

std::map<CString, CString>* convertedNames;

BOOL CSome::SeekNameWithConversion(std::set<CString> names, CString nameToFind)
{
for (auto it = names.begin(); it != names.end(); ++it)
{
if (nameToFind.Compare(*it) == 0) return true;

auto convertedIt = convertedNames->find(*it);
if (convertedIt != convertedNames->end() &&
nameToFind.Compare(convertedIt->second) == 0)
return true;

CString justConvertedName = ConvertToTheOtherFormat(nameToFind);
convertedNames->insert(*it, justConvertedName); // Error here
return nameToFind.Compare(justConvertedName) == 0;
}
}

出现的错误是:

error C2675: unary '++': 
'ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<_CharType>>>' does
not define this operator or a conversion to a type acceptable to the
predefined operator

我想知道为什么这里会涉及操作符++,然后我应该如何处理这个错误。

最佳答案

大部分insert std::map 的函数需要一个迭代器。相反,您传递指向对象(我想是 CString):

convertedNames->insert(*it, justConvertedName);
^^^
this is a CString, not a std::map<CString,CString>::iterator

如果你想插入一个键值对,使用 map 的 value_type 而不是它基本上是一个 std::pair 由键和值组成:

convertedNames->insert(std::make_pair(*it, justConvertedName));

关于c++ - 在 std::map<CString, CString> 中插入新对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39875536/

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