C++ 这段超简单代码的--哪有错啊?

来源:百度知道 编辑:UC知道 时间:2024/06/02 01:10:42
是按题目写的:

main()
{
vector<int> iter;
int oo;
cin>>oo;
while(oo!=0)
{
iter.push_back(oo);
cin>>oo;
}
if(!iter.empty())
{
vector<int>::iterator ll=iter.begin();
vector<int>::reference lk=iter.front();
vector<int>::reference en=*--iter.end();
vector<int>::iterator lp=iter.back();
}
return 0;
}

错误信息:
--------------------Configuration: stringstreamlizi - Win32 Debug--------------------
Compiling...
stringstreamlizi.cpp
F:\C++实验文件\stringstreamlizi.cpp(21) : error C2105: '--' needs l-value
F:\C++实验文件\stringstreamlizi.cpp(22) : error C2440: 'initializing' : cannot convert from 'int' to 'int *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

st

end() 和begin()是 迭带器
front()和back()是引用

这样改...
vector<int>::iterator ll=iter.begin();
vector<int>::reference lk=iter.front();
vector<int>::iterator en=--iter.end();
vector<int>::reference lp=iter.back();

错误主要是
vector<int>::iterator lp=iter.back();
把引用 附值给了 迭带器

reference 变量 = 解引用 iterator 变量

vector<int>::reference en=*--iter.end(); //主要是此句错了,应该是改成vector<int>::reference en=iter.end();吧