Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengisih bekas C++ STL?

Bagaimana untuk mengisih bekas C++ STL?

WBOY
WBOYasal
2024-06-02 20:22:00386semak imbas

Cara mengisih bekas STL dalam C++: Gunakan fungsi sort() untuk mengisih bekas di tempatnya, seperti std::vector. Dengan bekas pesanan std::set dan std::map, elemen diisih secara automatik semasa sisipan. Untuk susunan isihan tersuai, anda boleh menggunakan kelas pembanding tersuai, seperti mengisih vektor rentetan mengikut abjad.

如何排序C++ STL容器?

Cara Isih C++ STL Container

STL (Perpustakaan Templat Standard) menyediakan satu set algoritma tujuan am yang fleksibel dan cekap untuk melaksanakan pelbagai operasi pada bekas, termasuk pengisihan. Bahagian berikut menerangkan beberapa cara biasa untuk mengisih bekas STL dalam C++.

Gunakan fungsi sort()

std::sort() fungsi ialah fungsi paling mudah dalam C++ untuk pengisihan bekas. Ia menerima rujukan atau penunjuk kepada bekas sebagai input dan mengisih elemennya pada tempatnya. Contoh berikut menunjukkan cara menggunakan fungsi sort() untuk mengisih std::vector: std::sort() 函数是 C++ 中进行容器排序最简单的函数。它接受一个容器的引用或指针作为输入,并将其元素原地排序。以下示例演示如何使用 sort() 函数对一个 std::vector 进行排序:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
  std::vector<int> v = {3, 1, 4, 2, 5};

  // 使用 sort() 函数对向量进行排序
  std::sort(v.begin(), v.end());

  // 打印排序后的向量
  for (int num : v) {
    std::cout << num << " ";
  }
  
  return 0;
}

输出:

1 2 3 4 5

使用 std::set 和 std::map 的内建排序

std::setstd::map 是 C++ 中的有序容器,它们维护自己的元素集合并在插入时自动对元素进行排序。以下示例展示如何使用 std::set

#include <iostream>
#include <set>

int main() {
  std::set<int> s = {3, 1, 4, 2, 5};

  // 由于 std::set 是有序的,元素按升序存储
  for (int num : s) {
    std::cout << num << " ";
  }
  
  return 0;
}

Output:

1 2 3 4 5

Menggunakan std::set dan std: :isihan terbina dalam peta

std::set dan std::map ialah bekas yang dipesan dalam C++ yang mengekalkan set elemen mereka sendiri dan Isih elemen secara automatik. Contoh berikut menunjukkan cara menggunakan std::set untuk mencipta dan mengisih set integer:

#include <iostream>
#include <vector>
#include <algorithm>

class StringComparator {
public:
  bool operator()(const std::string& a, const std::string& b) const {
    return a < b;
  }
};

int main() {
  std::vector<std::string> v = {"apple", "banana", "cherry", "dog", "elephant"};

  // 使用自定义比较器对向量进行排序
  std::sort(v.begin(), v.end(), StringComparator());

  // 打印排序后的向量
  for (const std::string& s : v) {
    std::cout << s << " ";
  }
  
  return 0;
}

Output:

apple banana cherry dog elephant

Pembanding pengisihan tersuai🎜🎜Untuk kes di mana susunan tersuai adalah diperlukan, anda boleh Dilaksanakan melalui kelas pembanding tersuai. Contoh berikut menunjukkan cara membuat pembanding tersuai yang mengisih vektor rentetan mengikut abjad: 🎜rrreee🎜🎜Output: 🎜🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk mengisih bekas C++ STL?. 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