【发布时间】:2021-03-18 11:58:29
【问题描述】:
无法理解以下代码:
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
不确定如何减去 X.begin 返回的迭代器返回最大/最小元素的索引?
【问题讨论】:
-
你确定不是
- X.begin()? -
这有什么不清楚的地方? (Paul 在旁边发现的错字。)
-
迭代器减法就像指针减法一样工作。 There are a number of useful operations you can perform on iterators(和指针)。 (我稍微简化了一点,因为有不同类型的迭代器,但
vector的迭代器是随机访问迭代器,所以我在此评论中关注这些类型的迭代器)。 -
注意错字。我只是有点困惑它如何从容器开头减去迭代器返回一个索引?从 min_element() 调用返回的迭代器减去向量开头的迭代器究竟是如何返回一个索引的?
-
没有魔法,迭代器只是为了支持这个减法运算符而设计的