概述
本篇学习Iterator的迭代器函数操作,具体函数如下:
定义于头文件 | |
advance | 令迭代器前进给定的距离 (函数模板) |
distance | 返回两个迭代器间的距离 |
begin | 开始迭代器 (函数模板) |
end | 结束迭代器 (函数模板) |
next (C++11) | 令迭代器自增 (函数模板) |
prev (C++11) | 令迭代器自减 (函数模板) |
代码示例1
advance我们知道list列表可以取头元素和尾元素,那如果要取中间元如果操作呢,因为它没有[i]也有没at(i)操作,那么使用advance函数就可以取到中间的任意元素,具体示例如下:
#include <iostream>
#include <iterator>
#include <list>
using namespace std;
int main()
{
list<int> mylist{10,20,30,40,50,60,70,80,90,100};
for(auto li = mylist.begin(); li != mylist.end(); ++li)
{
cout << *li << "t";
}
cout << "n";
//取第5个无素
list<int>::iterator it = mylist.begin();
std::advance(it, 4);
cout << "The five element in mylist is: " << *it << endl;
list<int>::iterator it1 = mylist.begin();
std::advance(it1, 6);
cout << "The seven element in mylist is: " << *it1 << endl;
*it1 = 90;
for(auto li = mylist.begin(); li != mylist.end(); ++li)
{
cout << *li << "t";
}
cout << "n";
cout << "Hello World!" << endl;
return 0;
}
代码示例2 distance取两个迭代器之间的距离
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main()
{
list<int> mylist{10,20,30,40,50,60,70,80,90,100};
std::list<int>::iterator first = mylist.begin();
std::list<int>::iterator last = mylist.end();
std::cout << "list distance(first, last) = " << std::distance(first, last) << 'n';
//std::cout << "list distance(last, first) = " << std::distance(last, first) << 'n'; //list不能使用
std::vector<int> vec{32, 15, 43, 25, 36};
std::vector<int>::iterator vfirst = vec.begin();
std::vector<int>::iterator vlast = vec.end();
std::cout << "vector distance(first, last) = " << std::distance(vfirst, vlast) << 'n';
std::cout << "vector distance(last, first) = " << std::distance(vlast, vfirst) << 'n';
cout << "n";
cout << "Hello World!" << endl;
return 0;
}
代码示例3 begin开始迭代器
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main()
{
//3.begin
std::vector<int> vec{32, 15, 43, 25, 36};
std::vector<int>::iterator iter2 = vec.begin();
//取vector第2个元素
++iter2;
std::cout << "vector iter2 = " << *iter2 << 'n';
cout << "Hello World!" << endl;
return 0;
}
代码示例4 end结束迭代器
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main()
{
std::vector<int> vec{32, 15, 43, 25, 36};
//取vector最后一个元素
std::vector<int>::iterator iter = vec.begin();
while(iter != vec.end())
{
++iter;
if(iter == vec.end())
{
//取最后一个元素
--iter;
std::cout << "vector iter = " << *iter << 'n';
break;
}
}
cout << "n";
cout << "Hello World!" << endl;
return 0;
}
最后
以上就是大力薯片为你收集整理的Iterator 学习之迭代器函数操作的全部内容,希望文章能够帮你解决Iterator 学习之迭代器函数操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复