关于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
请指点,谢谢!!! 展开
迭代器类似于指针用于遍历成员,每种容器有自己的迭代器。
通过使用迭代器可以使访问不同容器的成员的代码保持一致,提高了代码的复用性。
这理解是否正确,请指教,
还有迭代器是类吗?
谢谢。
有关迭代器的代码:
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
请指点,谢谢!!! 展开
2个回答
展开全部
"相当于"指针.
注意只是"相当于"指针, 具体是什么类型由库的作者更具不同的容器来实现.
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之类的容器, 就绝对不是单纯的指针了, 应为其功能不是单纯的指针可以实现的.
注意只是"相当于"指针, 具体是什么类型由库的作者更具不同的容器来实现.
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之类的容器, 就绝对不是单纯的指针了, 应为其功能不是单纯的指针可以实现的.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询