C++ 算法错误:参数无法从对转换1
在本作业中,我正在制作一个应用程序,其中用户输入一个电话号码,无论它是否为字母 我试过使用const-on-maps或vector来查看它是否解决了问题,但我认为它只是产生了更多的错误 下面是我认为会导致一些问题的代码C++ 算法错误:参数无法从对转换1,c++,std-pair,C++,Std Pair,在本作业中,我正在制作一个应用程序,其中用户输入一个电话号码,无论它是否为字母 我试过使用const-on-maps或vector来查看它是否解决了问题,但我认为它只是产生了更多的错误 下面是我认为会导致一些问题的代码 std::vector<int> mappednums; for (char& achar : word) { auto itr = std::find_if(lookupmap.begin(), lookupmap.end(), [&
std::vector<int> mappednums;
for (char& achar : word) {
auto itr = std::find_if(lookupmap.begin(), lookupmap.end(), [&](std::pair<int, std::vector<char>>& aPair)->bool
{
auto itr = std::find_if(aPair.second.begin(), aPair.second.end(), [&](char& ch) {
return ch == achar;
});
if (itr != aPair.second.end()) {
return true;
}
});
if (itr != lookupmap.end()) {
mappednums.push_back(itr->first);
}
我希望它能找到一对,但它给了我一个错误,说它不能从上面的代码转换参数1。以下是错误:
'bool main::<lambda_06927067034dcc4076cc2514a7e290fe>::operator ()(std::pair<int,std::vector<char,std::allocator<char>>> &) const': cannot convert argument 1 from 'std::pair<const _Kty,_Ty>' to 'std::pair<int,std::vector<char,std::allocator<char>>> &'
您尚未为lambda正确声明参数。应该是
[&](std::pair<const int, std::vector<char>>& aPair)
其中,“LookupMapType”是lookupmap的类型
如果您的编译器支持C++14或更高版本,并且您启用了它,那么如果需要,您可以将其简化为
[&](auto &aPair)
简短答复:
在第一个lambda参数的int之前添加常量:
[&](std::pair<const int, std::vector<char>>& aPair)->bool
长答覆:
根据图::迭代器是一个迭代器到一个图::value_类型,而图::value_类型是pair是您的case是pair
问题是您试图将pair&引用绑定到pair类型的值。如果你能做到这一点,你将能够变异地图中的键,完全破坏地图的内部结构。因此,不允许对它们进行变异,它成对表示为const。stringmap和lookupmap是什么类型的?我们必须了解更多信息:所有代码;这是在函数调用中间截断的。Stutmap是在STD::map Strimmap下面的,查找是STD::MAP LoopUpmap。如果你有问题的更多细节,请把它们编辑进去,不要评论。在VisualStudio中,错误窗口只包含错误的摘要。完整的错误消息在输出窗口中。
[&](std::pair<const int, std::vector<char>>& aPair)->bool