我有迭代器我不想改变,但我想将另一个迭代器分配给迭代器-1的值,所以
it2 = --it1;
是不可能的。
问题:
it2 = it1-1;
不起作用。
错误:'更大 - 1'中的'operator-'不匹配 c ++ / 4.1.1 / bits / stl_bvector.h:182:注意:候选者是:ptrdiff_t std :: operator-(const std :: _ Bit_iterator_base&,const 的std :: _ Bit_iterator_base&安培;)
ofc我能做到
it2 = --it1;
it1++;
但这太可怕了。
答案 0 :(得分:8)
在C ++ 11中,使用标题<iterator>
中的std::prev
:
it2 = std::prev(it1);
在此之前,你不得不制作副本并将副本推进-1:
it2 = it1;
std::advance(it2, -1);
或:
it2 = it1;
it2--;
答案 1 :(得分:1)
你可以这样做:
it2 = it1;
-- it2;
it1
将不会被修改。