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

标签 c++ sorting search

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

    [&](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;
 }

第二个问题,当我有经典的一维输入数组时,我该如何调用

最佳答案

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

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

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

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

std::sort(std::begin(ac), std::end(ac), comp);

关于c++ - 在排序数组 c 之前保留索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14963840/

相关文章:

c++ - 调试 .Net 和 C++ 应用程序

c++ - 来自文本文件的数组 - 不工作

java - 使用 Arrays.sort 对数组元素进行排序

Python - 选择总和为 2D 列表中累积总和的 68% 的元素

python - 如何根据键的第一个元素(元组)对字典进行排序

c - 递归搜索未排序数组上的元素

c++ - 如果为char分配了非char则无限循环

PHP/MySql 在数组中搜索一个值

algorithm - n^2 数组搜索算法

C++ 避免全局变量和单例