在排序数组c之前保留索引

时间:2013-02-19 17:35:43

标签: c++ sorting search

您好我在排序之前将此代码用于我的商店索引,但是当我在此行中进行COmpile时: :

    [&](size_t a, size_t b){ return values[a] < values[b]; }

,对我说错误:

        Multiple markers at this line
- expected primary-expression before 
 '[' token
- expected primary-expression before 
 ']' token
- expected primary-expression before 
 'a'
- expected primary-expression before 
 'b'

 template <typename T>
 std::vector<size_t> ordered(std::vector<T> const& values) {
std::vector<size_t> indices(values.size());
std::iota(indices.begin(), indices.end(), static_cast<size_t>(0));

std::sort(
        indices.begin(), indices.end(),
        [&](size_t a, size_t b){ return values[a] < values[b]; }

);
return indices;
 }

第二个问题,当我有经典输入1d数组

时,我怎么称呼这个

1 个答案:

答案 0 :(得分:2)

这个[...](...) { ... }语法是一个lambda表达式,是C ++ 11的一个特性。您需要确保使用支持它们的编译器。一些编译器提供了一个开关来启用C ++功能(GCC为-std=c++0x)。

如果要在普通数组上使用std::sort,请使用:

std::sort(array, array + array_size, comp);

或者,您可以使代码不知道您是使用容器还是数组。 ac是数组或容器的位置:

std::sort(std::begin(ac), std::end(ac), comp);
相关问题