先决条件: STL 中的迭代器
迭代器是类似于指针的对象,用于迭代序列并操作容器元素。使用迭代器的优点是它将代码行减少到单个语句,因为它们允许我们使用指针作为迭代器来操作 STL 中的内置数组。迭代器可以是常量或非常量/常规迭代器。
常量迭代器:
const 迭代器指向一个常量类型的元素,这意味着 const_iterator 指向的元素不能被修改。虽然我们仍然可以更新迭代器(即迭代器可以递增或递减,但它指向的元素不能改变)。只能用于访问,不能用于修改。如果我们尝试使用 const 迭代器修改元素的值,则会产生错误。
常规迭代器:
常规或非 const_iterator指向容器内的元素,可用于修改它所指向的元素。常规迭代器在将算法与容器连接以及操作存储在容器内的数据方面发挥着关键作用。常规迭代器最明显的形式是指针。
指针可以指向数组中的元素,并且可以使用增量运算符(++) 遍历它们。每个容器类型都有一个特定的常规迭代器类型,旨在迭代其元素。
下面是一个 C++ 程序来演示两个迭代器的工作差异:
C++
// C++ program to demonstrate a regular
// and const_iterator
#include
#include
#include
using namespace std;
// Function that demonstrate regular
// iterators
void regularIterator(vector& v)
{
// Declare a regular iterator
// to a vector
vector::iterator i;
// Printing the elements of the
// vector v using regular iterator
for (i = v.begin(); i < v.end(); i++) {
// Update elements of vector
*i += 1;
cout << *i << " ";
}
}
// Function that demonstrate const
// iterators
void constIterator(vector& v1)
{
// Declare a const_itearor
// to a vector
vector::const_iterator ci;
// Printing the elements of the
// vector v1 using regular iterator
for (ci = v1.begin(); ci < v1.end(); ci++) {
// Below line will throw an error
// as we are trying to modify the
// element to which const_iterator
// is pointing
//*ci += 1;
cout << *ci << " ";
}
}
// Driver Code
int main()
{
// Declaring vectors
vector v = { 7, 2, 4 };
vector v1 = { 5, 7, 0 };
// Demonstrate Regular iterator
regularIterator(v);
cout << endl;
// Demonstrate Const iterator
constIterator(v1);
return 0;
}
输出:
8 3 5
5 7 0
想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解基础加 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程。