vector< pair<size_t, tuple<double,double> >>
sort_indexes(const vector<tuple<double,double>> &v)
//takes a list and prepends the sorted inxdex
{
// Copy data
vector< pair<size_t, tuple<double,double> >> idx(v.size());
for (size_t i = 0; i != idx.size(); ++i)
{
idx[i].first=i ;
idx[i].second=v[i];
}
sort(idx.begin(), idx.end(),
[&v](size_t i1, size_t i2) {return get<0>(v[i1]) < get<0>(v[i2]);}
);
return idx;
}
Run Code Online (Sandbox Code Playgroud)
错误看起来像:
1> C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\VC\include\algorithm(3781):错误C2664:'bool sort_indexes :::: operator()(size_t,size_t)const':无法转换参数1从'std :: pair <_Ty1,_Ty2>'到'size_t'
我很困惑,比较器的形式是什么?我认为它应该是返回布尔值的任何东西?和lambda我提供接缝返回一个布尔值?
当我删除比较器时,代码仍然排序,虽然这种效果不合适,因为索引的排序具有可预测的结果.
你试图对a进行排序vector< pair<size_t, tuple<double,double> >>,所以比较器必须比较pair<size_t, tuple<double,double> >,而不是size_t.