【问题标题】:error: 'sort' is not a member of 'std::ranges'; did you mean 'std::sort'?错误:“排序”不是“std::ranges”的成员;你的意思是'std :: sort'吗?
【发布时间】:2021-02-27 22:41:53
【问题描述】:

我运行了以下代码

vector<int> randomIntegers = generateIntegers(10); // Generates 10 integers

std::ranges::sort(randomIntegers);

当我用 g++ -std=c++20 file.cpp 编译时,我得到了

error: 'sort' is not a member of 'std::ranges'; did you mean 'std::sort'?
  • gcc --version: gcc 10.2.0
  • g++ --version: g++ 10.2.0

为什么排序不是成员?我正在使用 VScode 智能感知,它显示了诸如advancebegincommon_view 之类的方法。但不排序。

【问题讨论】:

  • #include &lt;algorithm&gt;了吗?
  • 专业提示:始终检查cppreference.com - 它会在顶部告诉您您需要什么标题。这并不总是显而易见的。 (例如,为什么std::accumulate 不在&lt;algorithm&gt; 中?不知道,but it's not ...

标签: c++ c++20 std-ranges g++10


【解决方案1】:

要访问std::ranges::sort,您需要#include &lt;algorithm&gt;

#include <algorithm>
#include <vector>

int main() {
    std::vector<int> randomIntegers{9,8,7,6,5,4,3,2,1,0}; // some integers

    std::ranges::sort(randomIntegers);
}

Demo

【讨论】:

    【解决方案2】:

    ranges api

    但是您可以按如下方式使用排序:

    #include <algorithm>
    std::sort(randomIntegers.begin(), randomIntegers.end());
    

    【讨论】:

      猜你喜欢
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 2020-02-02
      • 2014-08-27
      • 2021-09-07
      • 2013-08-07
      • 2017-05-20
      相关资源
      最近更新 更多