如何从双向迭代器中减去1

时间:2013-12-13 16:20:22

标签: c++ stl

我有迭代器我不想改变,但我想将另一个迭代器分配给迭代器-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++;

但这太可怕了。

2 个答案:

答案 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将不会被修改。