【发布时间】:2016-10-28 21:08:34
【问题描述】:
我的问题是 sn-p A 运行良好但 sn-p B 失败的原因是什么?
片段A
std::vector<double> a;
std::vector<double>::const_iterator i;
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
a.push_back(5);
for(i=a.begin(); i!=a.end(); ++i){
std::cout<<(*i)<<std::endl;}
片段 B
std::vector<int> v;
v.push_back(999);
int j = *(--v.end()); //What's wrong here?
【问题讨论】:
-
Snippet B 在什么方面让你失望了?
-
你不能对右值这样做。减少右值迭代器和减少右值迭代器一样荒谬
--2 -
ideone.com/dSjhtJ 我没有看到任何“不工作”
-
可以使用
*(v.end()-1),但不能修改end()迭代器。这就像尝试做--sizeof(array)。 -
@Barmar,请将您的答案作为解决方案发布,以便尼古拉斯接受