首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

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

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()

热点排行