下面的程序在vC++6.0中能编译通过,在vs2008中却不能,不知为什么,求大虾指导。

2024-12-28 06:40:35
推荐回答(3个)
回答1:

加两个 iter=f.end();就可以
VS2008的insert中参数好像都是const
iterator insert(const_iterator _Where, const _Ty& _Val)
{// insert _Val at _Where
size_type _Off = size() == 0 ? 0 : _Where - begin();
_Insert_n(_Where, (size_type)1, _Val);
return (begin() + _Off);
}
插入后不改变iterator,所以要重新iter=f.end();
难道vc6不同吗

#include
#include
#include "iterator"
#include "algorithm"
using namespace std;
void Display(vector&a,const char* s);
int main()
{
int Array[5]={1,2,3,4,5};
vectorf,f1;
vector::iterator iter,q,h;
copy(Array,Array+5,back_inserter(f));
Display(f,"before change.");

f.push_back(6);

Display(f,"after push a number.");
iter=f.end();
f.insert(iter,7);
Display(f,"after insert seven.");

iter=f.end();
f.insert(iter,1,8);
Display(f,"after insert eight.");
int array[2]={9,10};
iter=f.end();
f.insert(iter,array,array+2);
Display(f,"after insert two numbers .");
vector::size_type a;
a=f.size();
cout<
bool b;b=f.empty();
return 0;

}
void Display(vector& a,const char* s)
{
cout<copy(a.begin(),a.end(),ostream_iterator(cout," "));
cout<
}

回答2:

版本升级 内部程序出错

回答3:

报什么错啊?直接复制粘贴在2010是不报编译错的。