无法理解以下代码:
int data[5] = { 1, 5, 2, 4, 3 };
vector<int> X(data, data+5);
int v1 = *max_element(X.begin(), X.end()); // Returns value of max element in vector
int i1 = min_element(X.begin(), X.end()) – X.begin(); // Returns index of min element in vector
Run Code Online (Sandbox Code Playgroud)
不确定如何减去X.begin返回的迭代器返回max/min元素的索引?
std::vector<T>::iterator
满足RandomAccessIterator概念,这意味着它有一个operator-
允许你减去两个迭代器并获得一个std::vector<T>::iterator::difference_type
指示两个迭代器之间距离的概念.
std::vector<T>::iterator
实际上可以使用指针作为迭代器来实现底层实现,在这种情况下,减法运算符只是在做指针运算.有没有要求对使用指针来实现迭代器,但它是一个潜在的设计.
其他容器的迭代器可能没有此功能.例如,std::set<T>::iterator
仅满足BidirectionalIterator概念,该概念指定了比RandomAccessIterator概念更少丰富的功能集.