我正在尝试使用std::transform将两个大小相等的向量合并成一个成对的向量。
int main()
{
vector<string> names;
// fill it with names
vector<int> nums;
// fill it with numbers
typedef pair<int,string> Pair_t;
vector<Pair_t> pv;
transform(nums.begin(), nums.end(),
names.begin(), back_inserter(pv),
make_pair<int,string>);
}VC10为我提供了:
'_OutIt std::transform(_InIt1,_InIt1,_InIt2,_OutIt,_Fn2)' : could not deduce template argument for '_OutIt' from 'std::back_insert_iterator<_Container>'
with
[
_Container=std::vector<Pair_t>
]那么为什么不能推导出模板参数呢?我该如何修复它呢?
发布于 2011-05-03 09:38:31
这是由于当前版本的VC10中存在错误,无法正确解决make_pair的过载问题。
有关于这个问题的讨论here,以及使用VC10支持的C++0xλ表达式的变通方法。
https://stackoverflow.com/questions/5864171
复制相似问题