函数模板
<iterator>

std::operator- (move_iterator)

template <class Iterator1, class Iterator2>  auto operator- (const move_iterator<Iterator>& lhs,                  const move_iterator<Iterator>& rhs)  -> decltype (rhs.base()-lhs.base()) { return rhs.base()-lhs.base(); }
减法运算符
返回 lhsrhs 之间的距离

该函数返回的结果与减去 lhsrhsbase iterators 的结果相同。

此运算符也重载为成员函数,用于返回一个偏移 n 个元素位置的move iterator(参见move_iterator::operator-)。

参数

lhs, rhs
用于减法运算符左右两边的move_iterator对象,它们支持减法运算。

返回值

lhsrhs 之间的元素数量。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// subtracting move_iterators
#include <iostream>     // std::cout
#include <iterator>     // std::move_iterator
#include <string>       // std::string

int main () {
  std::string foo[] = {"one","two","three"};

  std::move_iterator<std::string*> from (foo);
  std::move_iterator<std::string*> until (foo);
  until += sizeof(foo)/sizeof(std::string);

  std::cout << "foo has " << (until-from) << " elements.\n";

  return 0;
}

输出

foo has 3 elements


数据竞争

访问 lhsrhs 两个对象。

异常安全

提供与应用于 lhsrhsbase iterators 相同的保证级别。

另见