使用变换翻转地图,接收错误"type int unexpected"
Flipping a map using transform, receiving error "type int unexpected"
我有以下代码,其中包括翻转我从这个问题中获取的地图。编译器为最后一行代码返回错误,指出参数"flip_pair<int,double>"中的"int"类型是意外的。我对此感到困惑 - 该类型似乎适用于flip_pair函数,所以我觉得我一定错过了一些更基本的东西。谢谢你的任何建议。
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <iterator>
std::pair<double,int> flip_pair(const std::pair<int, double> &p){
return std::pair<double,int>(p.second,p.first);
}
int main(){
std::map<int, double> s;
s[1] = 5.5; s[2] = 3.2;
std::multimap<double,int> dst;
std::transform(s.begin(), s.end(),
std::inserter(dst, dst.begin()),flip_pair<int, double>);
}
你应该写flip_pair
而不是flip_pair<int, double>
:
std::transform(s.begin(), s.end(),
std::inserter(dst, dst.begin()), flip_pair);
当涉及模板时,可能会使用flip_pair<int, double>
语法,但在您的示例中,它们不是。
请注意,另一个选项(如果您只需要在一个地方flip_pair
功能(是简单地使用lambda:
std::transform(std::cbegin(s), std::cend(s),
std::inserter(dst, std::begin(dst)), [](const auto& e) {
return std::make_pair(e.second, e.first);
});
相关文章:
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 将系数存储在头文件的数组中("does not name a type"错误)
- 尝试打开 ifstream 时出现"Incomplete type"错误
- C++ "错误:在'类 std::result_of< ... >"中没有名为'type'的类型"
- 结构中的错误"Incomplete type is not allowed"
- 在 C++ 中使用命名空间时出现"does not name a type"错误
- 已声明时"Does not name a type"错误
- 错误:断言失败 (src.type() == CV_8UC1) 在阈值中
- 如何摆脱导入的 make 项目中的 Eclipse 索引器"Type std::... could not be resolved"错误
- unordered_set .find 方法无法编译的 C++ "expression must have class type"错误
- C++ 嵌套类模板 错误 C2440 '=':无法从'type'转换为'same type'
- 模板类和'invalid use of incomplete type'错误
- 索引 2D 向量时'Reference to type const..'编译错误
- 我用C++做了一个计算器,但我对"type of calculator"的要求循环了两次。有人可以帮助指出我的错误吗?
- 使用变换翻转地图,接收错误"type int unexpected"
- C++生成器错误"Type name expected" time_t
- MSVC 2008 错误 'Type' 不是结构 (尽管它是)
- 无法理解此错误... "Type 'const intSet' does not provide a subscript operator"这是与所有星号一致的
- 使用 C++ 编译器面临错误"type qualifier specified more than once"