I have tried to apply this solution using c++11 (I am using gcc-4.8.2)
// sort algorithm example
#include <iostream> // std::cout
#include <algorithm> // std::sort
#include <vector> // std::vector
using namespace std;
vector<size_t> sort_indexes(const vector<float> &v) {
vector<size_t> idx(v.size());
for (size_t i = 0; i != idx.size(); ++i) idx[i] = i;
sort(idx.begin(), idx.end(),
[&v](size_t i1, size_t i2) {return v[i1] < v[i2];});
return idx;
}
int main () {
std::vector<float> w(4, 0.2f);
w.push_back(0.3f);
std::vector<size_t> idx = sort_indexes(w);
// print out content:
std::cout << "ordering:";
for (std::vector<size_t>::iterator it=idx.begin(); it!=idx.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
but I get a compiling error saying:
error: no matching function for call to ‘sort(std::vector::iterator, std::vector::iterator, sort_indexes(const std::vector&)::__lambda0)’ [&v](size_t i1, size_t i2) {return v[i1] < v[i2];});
error: template argument for ‘template void std::sort(_RAIter, _RAIter, _Compare)’ uses local type ‘sort_indexes(const std::vector&)::__lambda0’
I would appreciate any help :-)
Aucun commentaire:
Enregistrer un commentaire