vector是一个简单的线性连续空间。 它以两个迭代器 start 和 finish 分别表示vector的起始元素的地址和终止元素的地址。 并且还具有一个 end_of_storage 表示vector开辟的空间的终止位置。 所以: start - finish 表示的就是我们在连续空间中已经使用的范围。 start - end_of_storage 表示我们的总的空间大小。 fin...
std::iterator是一个特殊的类型,它提供了一种访问和遍历vector容器中元素的方式。迭代器实质上是一个指向容器中元素的指针,但它比普通的指针更加通用和灵活。 一、迭代器的定义与特点 迭代器在STL中是一个核心概念,用于遍历和访问容器中的元素。std::iterator是一个双向迭代器,意味着它可以从前往后遍历(使用++操作...
#include"iostream"using namespace std;#include"vector"intmain(){// 创建空的 vector 容器std::vector<int>vec{1,2,3};// 获取末尾迭代器vector<int>::iterator it=vec.end();// 该迭代器指向 容器中 最后一个元素 之后一个位置// 下面的代码会造成异常 , 不能获取对应的元素值cout<<*it<<endl;...
下面我将从多个角度来介绍vector迭代器的用法。 1. 迭代器的声明和初始化: 在使用迭代器之前,我们需要声明和初始化它。在C++中,vector迭代器的声明方式如下: std::vector<int>::iterator it; 这里的`std::vector<int>::iterator`表示了vector<int>的迭代器类型。我们也可以使用auto关键字来简化声明: auto it...
一、 迭代器 iterator 基本原理 1、迭代器 iterator 作用 2、迭代器 iterator 分类 3、双向迭代器 4、随机访问迭代器 二、 迭代器 iterator 正向遍历与逆向遍历 1、迭代器正向遍历与逆向遍历 2、使用迭代器正向遍历 vector 容器 3、使用迭代器反向遍历 vector 容器 ...
迭代器的类型是 std::vector<int>::iterator,它是一个指针类型,指向 vector 中的元素。我们可以通过解引用迭代器 *it 来访问 vector 中的当前元素。 除了使用 begin() 和end() 函数获取迭代器的起始和终止位置外,还可以使用 rbegin() 和rend() 函数获取反向迭代器的起始和终止位置。反向迭代器可以用于反向...
迭代器失效是指在使用迭代器遍历或操作vector容器时,由于某些操作导致迭代器失效,无法再正确引用容器中的元素。这种情况往往发生在vector容器进行扩容、插入或删除元素等操作时。迭代器失效可能导致程序出现未定义行为,甚至崩溃。 因此:深入理解vector迭代器失效的原因和场景,对于编写健壮、可靠的C++代码至关重要。
一、vector 我们先来看看vector容器内元素在内存中的布局: 其中的#0,#1...就是容器内的元素。从上图可以看出vector维护的是一个连续的线性空间,和数组是一样的。所以不论其元素为何种型别,普通指针就可以作为vector的迭代器!因为vector迭代器所需要的操作如operator*,operator->,operator++,operator+,operator-,op...
迭代器类vector::iterator 和 vector::reverse_iterator 的实现、迭代器类型、常用的容器成员 一、迭代器 迭代器是泛型指针 普通指针可以指向内存中的一个地址 迭代器可以指向容器中的一个位置 STL的每一个容器类模版中,都定义了一组对应的迭代器类。使用迭代器,算法函数可以访问容器中指定位置的元素,而无需关心...
1.创建你的第一个 vector 想象你在创建各种不同的百宝箱,每个箱子都有它的特色: 复制 // 召唤一个空空如也的百宝箱 🎁vector<int>empty_box;// 创建一个能装 5 个数字的箱子,默认都是 0(好像什么都没装一样)🎯vector<int>five_box(5);// 变出一个装了 3 个数字 10 的箱子(像是复制了三个相...