C C++中迭代器和指针的区别

C C++中迭代器和指针的区别

指针: 指针是一个变量,其中包含另一个变量的地址,即该变量的内存位置的地址。像任何变量或常量一样,我们必须在使用它来存储任何变量地址之前声明一个指针。

语法:

type* var_name;

示例:

#include <stdio.h>

int main()
{
    int x;

    // Prints address of x
    printf("%p", &x);

    return 0;
}

运行结果

0x6ff****5ae525

迭代器: 迭代器是指向元素范围(例如数组或容器)中的某个元素的任何对象,它能够迭代该范围内的元素。
语法:

type_container :: iterator var_name;

示例代码:

// C++ program to demonstrate iterators
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    // Declaring a vector
    vector<int> v = { 1, 2, 3 };

    // Declaring an iterator
    vector<int>::iterator i;

    int j;

    cout << "Without iterators = ";

    // Accessing the elements without using iterators
    for (j = 0; j < 3; ++j) {
        cout << v[j] << " ";
    }

    cout << "\nWith iterators = ";

    // Accessing the elements using iterators
    for (i = v.begin(); i != v.end(); ++i) {
        cout << *i << " ";
    }

    // Adding one more element to vector
    v.push_back(4);

    cout << "\nWithout iterators = ";

    // Accessing the elements without using iterators
    for (j = 0; j < 4; ++j) {
        cout << v[j] << " ";
    }

    cout << "\nWith iterators = ";

    // Accessing the elements using iterators
    for (i = v.begin(); i != v.end(); ++i) {
        cout << *i << " ";
    }

    return 0;
}

运行结果:

Without iterators = 1 2 3 
With iterators = 1 2 3 
Without iterators = 1 2 3 4 
With iterators = 1 2 3 4

迭代器和指针的区别:

迭代器和指针的相似之处在于我们可以取消引用它们以获取值。但是,主要区别如下:

指针 迭代器
指针在内存中保存一个地址。 迭代器可能持有一个指针,但它可能要复杂得多。例如,迭代器可以迭代文件系统上的数据、分布在多台机器上或以编程方式在本地生成的数据。
可以对指针执行简单的算术运算,如递增、递减、添加整数等。 并非所有迭代器都允许这些操作,例如,不能递减前向迭代器,或将整数添加到非随机访问迭代器。
T* 类型的指针可以指向任何类型 T 对象。 迭代器受到更多限制,例如, vector::iterator 只能引用向量容器内的双精度数。
可以使用 delete 删除指针 因为迭代器引用容器中的对象,与指针不同,迭代器没有删除的概念(容器负责内存管理)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程