迭代器问题,请高手解答,谢谢

zaixiankaifa 2012-03-31 08:03:03

#include<vector>
#include<iostream>
using namespace std;
class Student{
public:
Student(void):m_strName("没想好"){}
Student(const string& strName):m_strName(strName){}
friend ostream& operator<<(ostream& os,const Student& student){
return os<<'<'<<student.m_strName<<'>';
}
private:
string m_strName;
};


template<class T>
void print(T& vn){
cout<<"向量原数个数:"<<vn.size()<<endl;

for(vector<int>::iterator it=vn.begin();it !=vn.end();it++)
cout<<*it<<' ';


/* for(int i=0;i<vn.size();i++)
cout<<vn[i]<<' ';
cout<<endl;
*/


}


int main(){
vector<int> vn;
vn.push_back(34);
vn.push_back(23);
print<vector<int> >(vn);
vector<int>::iterator it=vn.begin();
*it=69;
*(it+1)=56;
print(vn);
*it=89.8;
print(vn);
vn[1000]=99;
print(vn);
cout<<vn[1000]<<endl;
vn.push_back(10);
print(vn);
vn.pop_back();
print(vn);
vector<int>vn2(5,34);
print(vn2);
vector<Student>vn3(10,Student("san"));
vn3[0]=Student("张飞");
vn3[3]=Student("赵云");
vn3[5]=Student("lisi");
vn3.push_back(Student("关羽"));
cout<<vn3[5]<<endl;
cout<<vn3.front()<<endl;
cout<<vn3.back()<<endl;
print(vn3);
return 0;
}


在编译到:print(vn3);时提示错误,提示错误的位置在:for(vector<int>::iterator it=vn.begin();it !=vn.end();it++),不知道为什么这样子错误提示:No viable conversion from 'iterator'(aka'_normal_iterator<pointer,vector_type>')to'vector<int>::iterator'(.....

请各位高手帮助解答
...全文
99 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2012-03-31
  • 打赏
  • 举报
回复
class Student{
public:
Student(void):m_strName("没想好"){}
Student(const string& strName):m_strName(strName){}
friend ostream& operator<<(ostream& os,const Student& student){
return os<<'<'<<student.m_strName<<'>';
}
private:
string m_strName;
};


template<class T>
void print(T& vn){
cout<<"向量原数个数:"<<vn.size()<<endl;

for(typename T::iterator it=vn.begin();it !=vn.end();it++)
cout<<*it<<' ';


/* for(int i=0;i<vn.size();i++)
cout<<vn[i]<<' ';
cout<<endl;
*/


}


int main(){
vector<int> vn;
vn.push_back(34);
vn.push_back(23);
print<vector<int> >(vn);
vector<int>::iterator it=vn.begin();
*it=69;
*(it+1)=56;
print(vn);
*it=89;
print(vn);
vn[1000]=99;
print(vn);
cout<<vn[1000]<<endl;
vn.push_back(10);
print(vn);
vn.pop_back();
print(vn);
vector<int>vn2(5,34);
print(vn2);
vector<Student>vn3(10,Student("san"));
vn3[0]=Student("张飞");
vn3[3]=Student("赵云");
vn3[5]=Student("lisi");
vn3.push_back(Student("关羽"));
cout<<vn3[5]<<endl;
cout<<vn3.front()<<endl;
cout<<vn3.back()<<endl;
print(vn3);

system("pause");
return 0;
}

如果不熟悉模板的使用就去看看书先

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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