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

NoS*_*tAl 2 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&)

我能做到的

it2 = --it1;
it1++;
Run Code Online (Sandbox Code Playgroud)

但那太可怕了.

Lig*_*ica 8

在C++ 11中,使用std::prev标题<iterator>:

it2 = std::prev(it1);
Run Code Online (Sandbox Code Playgroud)

在此之前,你不得不自己制作副本并将副本推进-1:

it2 = it1;
std::advance(it2, -1);
Run Code Online (Sandbox Code Playgroud)

要么:

it2 = it1;
it2--;
Run Code Online (Sandbox Code Playgroud)