遍历通常有两种方式: 通过下标 利用迭代器 如下: 代码语言: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 ix = 0; ix != v.size(); ix ++){ printf("%d\t", v[ix]); } printf("\n"); //利用迭代器 vector<int>::iterator it; for (it = v.begin(); it != v.end(); it ++){ printf("%d\t", *it); } printf("\n"); return 0; } 1. 2. 3. ...
顾名思义,迭代器是一种安全的访问控制器,它本身是一种指针,用于直接的元素访问。其遍历访问的大致思路是,创建容器的迭代器,让迭代器指向第一个元素,逐步向后移动并最终指向最后一个元素结束。 遍历代码举例: 1 2 3 4 5 vector<int> v;//创建一个向量vs vector<int>::iterator it;//C98标准 for(it=v....
begin 返回的迭代器与 end 返回的迭代器同样。由 end 操作返回的迭代器并不指向 vector 中不论什么实际的元素,相反,它仅仅是起一个哨兵(sentinel)的作用。表示我们已处理完 vector 中全部元素。 【备注:不用操心begin和end在循环中的条件推断。大胆使用吧! 】 vector 迭代器的自增和解引用运算 迭代器类型可使用...
- 例如,使用迭代器遍历`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;} `...
vector的遍历 可以使用循环结构来遍历vector中的元素。 #include<stdio.h> #include<vector.h> intmain(){ vector<int>v={1,2,3,4,5}; // 使用for循环遍历元素 for(inti=0;i<v.size();i++){ printf("%d",v[i]); } // 使用迭代器遍历元素 for(autoit=v.begin();it!=v.end();++it){ ...
这里的许多示例都没有,并且应该使用 cont 迭代器。这里我们假设 class T { public: T (double d) : _d { d } {} void doSomething () const { cout << _d << endl; return; } void changeSomething () { ++_d; return; } private: double _d; }; vector<T> v; // ... for (const ...
这是因为使用 erase 删除元素之后,迭代器it 已经指向了被删除元素的下一个元素。所以当删除第一个 3 后,it 实际指向了下一个元素 3(或者说元素 3 向前移了一个单位),因此再经历 it++ 后,此时删除的其实是元素 4 ,而上一个元素 3 并没有被删除。此外,如果删除的是最后一个元素,it 便会指向 vec.end(...
6、迭代器操作容器中对应位置的值/ 当迭代器指向了容器中的某位置,则可以使用 * 加迭代器操作该位置了/ 定义一个vectorstd:vector<int> myVec;/添加10个元素for(int j =0 ; j<10 ; j+)myVec.push_back(j);/ 定义一个迭代器std:vector<int>:iterator p;/ 指向容器的首个元素p = myVec.begin()...