读书人

C++迭代器嵌套的BUG?需解释

发布时间: 2013-09-05 16:02:06 作者: rapoo

C++迭代器嵌套的BUG?需要解释
本帖最后由 u010569110 于 2013-08-25 07:40:34 编辑

#include <iostream>
#include <vector>
#include <string>
#include <cctype>
using namespace std;
int main()
{
vector<string> word;
string temp;
while(cin>>temp)
{
word.push_back(temp);
}
for(vector<string>::iterator iter1=word.begin();iter1!=word.end();iter1++)//遍历word
{
for(string::iterator iter2=*iter1.begin();iter2!=*iter1.end();iter2++)//遍历string
{
*iter2=tolower(*iter2);//大写改小写
cout<<*iter2<<" ";
}
}
return 0;
}

环境:VS2010。
报错位置:在第二个begin和end。
报错内容:不是“std::_Vector_iterator<_Myvec>”的成员。
疑问:*iter1指向的是string类型,应该是string的成员,报错内容却是不是Vector_iterator成员?这是编译器问题,还是语法问题?我觉得语法没问题。
经过测试,把*iter1赋值到一个a上,用a代替*iter1,程序可以运行。 迭代器 编译器
[解决办法]
优先级搞错了。

(*iter1).begin();
(*iter1).end()

读书人网 >C++

热点推荐