为什么迭代器不能访问该元素的成员,两种方法都不行、、

我是一个卒 2016-12-31 02:51:46

#include<string>
using std::string;
int main()
{
string s1;
auto i=s1.begin();
i->empty();//错误
(*i).empty();//错误
}


以上为错误代码。
错误原因为:[Error] request for member 'empty' in '* i.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator->
<char*, std::basic_string<char> >()', which is of non-class type 'char'

...全文
185 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-01-03
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
AlbertS 2017-01-03
  • 打赏
  • 举报
回复
迭代器指向的元素类型,要想调用迭代器empty(),要看你的元素有没有empty()方法
xskxzr 2016-12-31
  • 打赏
  • 举报
回复
迭代器指向的元素类型是char,char哪有empty成员。
ipqtjmqj 2016-12-31
  • 打赏
  • 举报
回复
迭代器没有empty方法,而且有的话也应该用.来访问。
  • 打赏
  • 举报
回复
#include<string>
#include <stdio.h>

using std::string;
int main()
{
    string s1 = "hello";
    char h= *s1.begin();

    printf("h = %c\n",h);
}
~
我是一个卒 2016-12-31
  • 打赏
  • 举报
回复
实在是想不出来为什么错了。 直接用 s1.empty();就可以。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧