Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk mengakses bekas C++ STL menggunakan iterator berterusan?

Bagaimana untuk mengakses bekas C++ STL menggunakan iterator berterusan?

WBOY
Lepaskan: 2024-06-03 15:15:57
asal
962 orang telah melayarinya

Jawapan: Gunakan iterator tetap untuk mengakses elemen kontena STL tanpa mengubah suai kandungan. Penerangan terperinci: Iterator malar diperoleh melalui kaedah cbegin() dan cend() dan digunakan untuk melintasi bekas tanpa mengubah suai elemen. Gunakan operator * untuk mengakses elemen, mengembalikan rujukan elemen. Gunakan operator ++ dan -- untuk bergerak ke hadapan dan ke belakang melalui iterator. Gunakan operator == dan != untuk membandingkan dan menentukan sama ada penghujung bekas telah dicapai.

如何使用常量迭代器访问C++ STL容器?

Cara menggunakan iterator berterusan untuk mengakses bekas C++ STL

Dalam C++, bekas STL menyediakan berbilang jenis iterator, termasuk begin() dan end() The regular iterator dikembalikan dengan kaedah , dan iterator malar dikembalikan oleh kaedah cbegin() dan cend(). Iterator malar digunakan untuk mengulangi bekas tanpa mengubah suai kandungannya. begin()end() 方法返回的常规迭代器,以及 cbegin()cend() 方法返回的常量迭代器。常量迭代器用于遍历容器而不修改其内容。

语法:

常量迭代器与常规迭代器的语法相同。例如,在以下代码中,it 是一个指向 vector<int> 容器中元素的常量迭代器:

const vector<int> v = {1, 2, 3, 4, 5};
const vector<int>::const_iterator it = v.cbegin();
Salin selepas log masuk

访问元素:

要访问常量迭代器指向的元素,可以使用 * 运算符。与常规迭代器一样,*it 返回指向元素的引用:

cout << *it << endl; // 输出:1
Salin selepas log masuk

前进和后退:

与常规迭代器类似,常量迭代器还可以使用 ++-- 运算符进行前进和后退:

++it; // 前进到下一个元素
--it; // 后退到上一个元素
Salin selepas log masuk

比较:

常量迭代器也可以用 ==!= 运算符进行比较:

if (it == v.cend()) {
  cout << "迭代器指向容器的末尾" << endl;
}
Salin selepas log masuk

实战案例:

以下代码示例演示了如何使用常量迭代器遍历 vector

🎜Sintaks: 🎜🎜🎜Pelajar malar mempunyai sintaks yang sama seperti iterator biasa. Sebagai contoh, dalam kod berikut, ia ialah lelaran tetap yang menunjuk kepada elemen dalam bekas vector<int>: 🎜
#include <iostream>
#include <vector>

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

  // 使用常量迭代器遍历容器
  for (const vector<int>::const_iterator it = v.cbegin(); it != v.cend(); ++it) {
    cout << *it << " "; // 输出:1 2 3 4 5
  }

  return 0;
}
Salin selepas log masuk
🎜🎜Untuk mengakses elemen: 🎜🎜 🎜Untuk mengakses pemalar Untuk elemen yang ditunjuk oleh iterator, anda boleh menggunakan operator *. Seperti iterator biasa, *it mengembalikan rujukan kepada elemen: 🎜rrreee🎜🎜Ke hadapan dan ke belakang: 🎜🎜🎜Seperti iterator biasa, iterator tetap juga boleh menggunakan ++ dan <code>-- operator untuk ke hadapan dan ke belakang: 🎜rrreee🎜🎜Perbandingan: 🎜🎜🎜Penyalur tetap juga boleh digunakan dengan == dan != operator untuk perbandingan: 🎜rrreee🎜🎜Contoh praktikal: 🎜🎜🎜Contoh kod berikut menunjukkan cara menggunakan lelaran malar untuk melintasi bekas vektor: 🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk mengakses bekas C++ STL menggunakan iterator berterusan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan