template <typename T>
vector<int> sort_indexes(const vector<T>& v)
{
// 初始化索引
vector<int> idx(v.size());
for (int i = 0; i != idx.size(); ++i) idx[i] = i;
// 根据vector的值对索引排序
sort(idx.begin(), idx.end(),
[&v](int i1, int i2) -> bool({return v[i1] < v[i2]; })); //C++11 Lambda表达式
return idx;
}
这里使用了Lambda表达式的引用捕获。