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;
}
錯誤的樣子:比較器爲std :: algorithm :: sort?
1> C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ VC \包括\算法(3781):錯誤C2664:「布爾sort_indexes :: ::操作 ()(爲size_t,爲size_t)常量:性病::對< _Ty1,_Ty2> '到 '爲size_t'
我很困惑」不能從 轉換參數1',什麼是形式的比較?我認爲它應該是任何返回布爾值的東西?和lambda我提供接縫返回布爾值?
當我刪除比較器的代碼仍然排序,雖然這種效果是不希望的,因爲索引排序有一個可預測的結果。