C++ ,使用集合内定义的迭代器有什么好处?

为什么不用指针或者直接下标访问?着实没有感觉到迭代器的优势在哪里... 为什么不用指针或者直接下标访问?
着实没有感觉到迭代器的优势在哪里
展开
 我来答
zjnny
推荐于2016-07-10 · TA获得超过2037个赞
知道小有建树答主
回答量:1055
采纳率:100%
帮助的人:1063万
展开全部
泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象这样的事;泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。
将问题抽象化,程序员用起来更方便,可以不必纠结在这些重复的东西中
里面的实现用了优秀的算法,更加安全,它是和容器一起组合用的,至于威力你自己写一个数据结构,看看stl的源码,实现和容器一样的功能,比较比较啊
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fengfei5551223
2015-11-30 · TA获得超过135个赞
知道小有建树答主
回答量:213
采纳率:100%
帮助的人:125万
展开全部
1 便于访问集合中的元素。
2 同时通过迭代器可以操作set中的元素。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灰姑娘的霸气
推荐于2016-06-25 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3145
采纳率:72%
帮助的人:243万
展开全部
包括头文件:
#include <algorithm>
#include <set>
集合函数:
set<int> S1,S2;
S1.insert(1);//插入一个元素1
S2.insert(2);//插入一个元素2
set<int>::iterator site; //迭代器,用法同vector
set<int> Si;
set<int>vis
set_intersection( S.begin(), S.end(), S2.begin(), S2.end(), inserter( Si, Si.begin() ) ); //Si为求交后的集合
set_union(...)//并,语法同上
set_difference(...) //差,语法同上
vis.clear() 移除set容器内所有元素
vis.count(s) 返回vis中值为s的个数
if(vis.count(s)) 判断s是否在集合vis中
vis.find(s) 返回s所在位置,如找不到,返回end(),即为vis,fing(s)==vis.end() vis.insert(s) 把s加入集合
vis.remove(s) 从集合中移除s
输出:
set<int>::iterator ii;
for(ii=si.begin();ii!=si.end();ii++)
cout<<(*ii)<<' ';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤行雪影
2013-11-04 · 超过60用户采纳过TA的回答
知道小有建树答主
回答量:182
采纳率:100%
帮助的人:91.1万
展开全部
通用,安全。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式