顾名思义,迭代器是一种安全的访问控制器,它本身是一种指针,用于直接的元素访问。其遍历访问的大致思路是,创建容器的迭代器,让迭代器指向第一个元素,逐步向后移动并最终指向最后一个元素结束。 遍历代码举例: 1 2 3 4 5 vector<int> v;//创建一个向量vs vector<int>::iterator it;//C98标准 for(it=v....
erase(const_iterator pos); //删除迭代器指向的元素 erase(const_iterator start,const_iterator end); //删除迭代器从start到end之间的元素 clear(); //删除容器中的所有元素 1. 2. 3. 4. 5. 6. 7. 注意:插入和删除的参数是一个迭代器,可以简单的把迭代器理解为一个广义指针。 6.vector数据存取 at...
遍历通常有两种方式: 通过下标 利用迭代器 如下: 代码语言:javascript 复制 #include<stdio.h>#include<vector>using namespace std;intmain(){vector<int>v;for(int i=0;i<10;i++){v.push_back(i);}//利用下标for(vector<int>::size_type ix=0;ix!=v.size();ix++){printf("%d\t",v[ix]);...
for (vector<int>::size_type ix1 = 0; ix1 != v1.size(); ix1 ++){ printf("%d\t", v1[ix1]); } printf("\n"); printf("third: "); for (vector<int>::size_type ix2 = 0; ix2 != v2.size(); ix2 ++){ printf("%d\t", v2[ix2]); } printf("\n"); printf("fort...
- 例如,使用迭代器遍历`std::vector`:#include <iostream> #include <vector> int main() { std::vector<int> myVector = {1, 2, 3, 4, 5};std::vector<int>::iterator it;for (it = myVector.begin(); it!= myVector.end(); ++it) { std::cout << *it << " ";} return 0;} `...
07_vector基本操作_对象创建_头部尾部操作元素_数组方式遍历vector 23分 36秒 高清 下载 08_vector的迭代器遍历和迭代器的种类_传智扫地僧 10分 23秒 高清 下载 09_vector基本操作_删除和插入_传智扫地僧 11分 41秒 高清 下载 10_中午知识点回顾 08分 53秒 高清 下载 11_deque容器基本操作 11分 14秒 ...
这是因为使用 erase 删除元素之后,迭代器it 已经指向了被删除元素的下一个元素。所以当删除第一个 3 后,it 实际指向了下一个元素 3(或者说元素 3 向前移了一个单位),因此再经历 it++ 后,此时删除的其实是元素 4 ,而上一个元素 3 并没有被删除。此外,如果删除的是最后一个元素,it 便会指向 vec.end(...
!Vincent:迭代器是一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访问容器元素。 2.如何定义并初始化一个迭代器(iterator)?
清空容器: 清空容器会使容器内的所有元素被删除,这样迭代器指向的元素就会失效。 使用引起重新分配的操作: 例如,在vector中使用push_back()添加元素时,如果超出了当前容量,可能会触发重新分配操作,从而使所有迭代器失效。 排序操作: 如果在排序过程中,容器的元素被移动了位置,迭代器可能会失效。 deque 的实现原理 ...
typedef T* iterator;//vector的迭代器就是基础指针类型 }; 我们知道,vector是数组实现的,也就是说,只要知道数组的首地址,就能知道后面每个元素的位置,所以,访问vector的迭代器,其实就是一个基础的指针类型,我们可以通过++,--等操作,来遍历访问该vector。