关于C++迭代器的问题

关于迭代器的理解:迭代器类似于指针用于遍历成员,每种容器有自己的迭代器。通过使用迭代器可以使访问不同容器的成员的代码保持一致,提高了代码的复用性。这理解是否正确,请指教,... 关于迭代器的理解:
迭代器类似于指针用于遍历成员,每种容器有自己的迭代器。
通过使用迭代器可以使访问不同容器的成员的代码保持一致,提高了代码的复用性。

这理解是否正确,请指教,
还有迭代器是类吗?
谢谢。

有关迭代器的代码:

string s;
string::iterator sptr = str.begin();

//这个没问题,s是string类型变量,string是一种容器,sptr是string类型的迭代器,相当于char指针

vector <string> str;
vector <string>::iterator ptr = str.begin();
//这个 str是string类型的vector,
// 那么,ptr 这里的定义格式 ptr 是vector <string>的迭代器,还是<string>::iterator类型的 vector

请指点,谢谢!!!
展开
 我来答
Bk0X
2012-08-14 · TA获得超过9413个赞
知道小有建树答主
回答量:1217
采纳率:60%
帮助的人:669万
展开全部
"相当于"指针.
注意只是"相当于"指针, 具体是什么类型由库的作者更具不同的容器来实现.

vector<int>::iterator 解引用之后的类型是int&
vector<string>::iterator 解引用之后的类型是string&

所以你问的ptr是指向string的迭代器, 可以理解为string*

对于vector和string这样的类型, 是可能就是指针. 比如.
template <typename _Ty> class vector{
typedef _Ty* iterator;
typedef const _Ty* const_iterator;
};

但是有些实现比较复杂的库, 不是直接用指针, 而是用类封装之后重载各种操作符, 使其看起来像指针.

如果是list, map之类的容器, 就绝对不是单纯的指针了, 应为其功能不是单纯的指针可以实现的.
chiconysun
2012-08-14 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2582万
展开全部
迭代器理解没错,一般用嵌套类封装了的
ptr 就是string数据类型的vector类的嵌套类iterator,vector <string>::iterator就是类型
追问
谢谢
那 vector ::iterator ptr
ptr 是相当于string类型的指针了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式