Rumah >pembangunan bahagian belakang >C++ >Cara: Isih Tatasusunan Menggunakan std::isih dalam C

Cara: Isih Tatasusunan Menggunakan std::isih dalam C

Barbara Streisand
Barbara Streisandasal
2024-10-23 21:00:02917semak imbas

How to: Sort an Array Using std::sort in C

Isih Tatasusunan Menggunakan std::sort dalam C

Dalam C , perpustakaan templat standard menyediakan fungsi std::sort() untuk mengisih elemen dengan cekap dalam tatasusunan . Untuk tatasusunan yang diisytiharkan sebagai int v[2000], coretan kod berikut menunjukkan cara menggunakan std::sort() untuk mencapai ini:

<code class="cpp">#include <algorithm>

int main() {
  int v[2000];
  std::sort(std::begin(v), std::end(v));
}</code>

Walau bagaimanapun, std::begin() dan std: :end() fungsi yang diperkenalkan dalam C 0x/11 adalah penting untuk pendekatan ini. Fungsi ini mengembalikan iterator yang mewakili permulaan dan penghujung bekas tertentu, termasuk tatasusunan.

Jika anda tidak mempunyai akses kepada C 0x, anda boleh mentakrifkan sendiri fungsi ini:

Mulakan fungsi untuk bekas bukan const:

<code class="cpp">template<class Cont>
typename Cont::iterator begin(Cont& c) {
  return c.begin();
}</code>

Fungsi tamat untuk bekas bukan const:

<code class="cpp">template<class Cont>
typename Cont::iterator end(Cont& c) {
  return c.end();
}</code>

Mulakan fungsi untuk bekas const:

<code class="cpp">template<class Cont>
typename Cont::const_iterator begin(Cont const& c) {
  return c.begin();
}</code>

Fungsi akhir untuk bekas const:

<code class="cpp">template<class Cont>
typename Cont::const_iterator end(Cont const& c) {
  return c.end();
}</code>

Lebihan beban untuk tatasusunan gaya C:

<code class="cpp">template<class T, std::size_t N>
T* begin(T (&arr)[N]) {
  return &arr[0];
}

template<class T, std::size_t N>
T* end(T (&arr)[N]) {
  return arr + N;
}</code>

Dengan menggunakan fungsi ini, anda boleh mengisih tatasusunan dengan lancar menggunakan std::sort() dalam C .

Atas ialah kandungan terperinci Cara: Isih Tatasusunan Menggunakan std::isih dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn