读书人

c++ insert find函数没法运行 求高手调

发布时间: 2012-06-23 14:52:43 作者: rapoo

c++ insert find函数无法运行 求高手调试
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using std::cout;
using std::cin;
using std::vector;
using std::string;
using std::endl;
typedef std::vector<string>::iterator iter;
//想实验find insert 的用法
void main ()
{
vector<string> svec(4);
iter it;
if(!svec.empty())//给svec赋值
for(it=svec.begin();it!=svec.end();it++)
{cout<<"plase give the vector an element"<<endl;
//依次输入one two three four
cin>>*it;}
it=find(svec.begin(),svec.end(),"one");//每次到了这里程序就自动关掉了
//cout<<"iter"<<*it2;
svec.insert(svec.begin(),"five");//到了这里程序就会报错
cout<<*it;
it=find(svec.begin() ,svec.end(),"five");
cout<<"what is iter?"<<*it;
}
这个代码在vc6中因为iterator标识符太长,无法运行;在visual studio 2010中运行find,insert无法运行,刚自学c++,底子弱,求个位高手详解。

[解决办法]
倒数第三行的cout << *it;注释掉就可以了,跟编译器无关。

C/C++ code
#include <iostream>#include <vector>#include <string>#include <algorithm> using std::cout;using std::cin;using std::vector;using std::string;using std::endl;typedef std::vector<string>::iterator iter;//想实验find insert 的用法int main (){  vector<string> svec(4);  iter it;if(!svec.empty())//给svec赋值for(it=svec.begin();it!=svec.end();it++){cout<<"plase give the vector an element"<<endl;  //依次输入one two three fourcin>>*it;}it=find(svec.begin(),svec.end(),"one");//每次到了这里程序就自动关掉了cout<<"iter:"<<*it;svec.insert(svec.begin(),"five");//到了这里程序就会报错 // cout<<*it;//插入了新元素后原来的迭代器不能用了,取引用自然就会段错误it=find(svec.begin() ,svec.end(),"five");cout<<"what is iter?--"<<*it;} 

读书人网 >C++

热点推荐