簡體   English   中英

排序 function 在合並排序的 C++ 代碼中給出錯誤

[英]Sort function is giving error in C++ code of merge sort

#include <iostream>
using namespace std;
// merging two sorted array

void merge1(int a[], int b[], int m, int n)
{
  int c[m + n];
  for (int i = 0; i < m; i++)
    c[i] = a[i];
  for (int i = 0; i < n; i++)
    c[m + i] = b[i];
  sort(c, c + m + n);
  for (int i = 0; i < (m + n); i++)
    cout << c[i] << " ";
}

int main()
{
  int a[] = {10, 15, 20, 20};
  int b[] = {1, 12};
  merge1(a, b, 4, 2);
}

錯誤:

error: 'sort' was not declared in this scope; did you mean 'qsort'?
   21 |   sort(c, c + m + n);
      |   ^~~~
      |   qsort

該程序在clanggcc的更高版本上有效,這意味着需要更高版本的標准。 如果您刪除正在使用的編譯器版本,則可以重現此問題。 如果您放棄編譯器版本,您將需要包含<algorithm>並且程序將正常工作。

看一看。

我最好的猜測是編譯器在編譯時以某種方式識別 function,或者 function 在更高的<iostream>標准版本中可見,它包含在某些隱藏的頭文件中。

您也可以在clang++方面看到類似的故事。

筆記
  • 您需要檢查您正在使用的編譯器的版本,一般來說,觀察您正在使用的 function 是否受您正在運行的標准的支持。
  • 另外,當你運行這樣的東西時,請包括正確的 header 文件。
  • 另外,請大聲喊叫停止using namespace std; . 請。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM