在本节中,我们将看到如何使用C ++中STL返回的指针生成索引。众所周知,C ++中的许多内置函数将指针返回到内存中提供所需数字地址的位置,但它与返回值容器中的实际索引无关。例如,为了确定代码中的最大元素,我们使用std::max_element()函数,该函数不返回所需元素的索引,而是返回内存中的地址。但是有时候,我们需要从该地址获取索引。在这里,我们将看到如何生成索引。
从container.begin()方法中,我们将获得第一个位置的地址。现在从返回的地址中减去起始地址,我们可以得到差值。从那里我们可以找到索引。
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h> using namespace std; int main(){ vector<int> vec = { 10, 40, 50, 60, 30}; cout << "Max element is : " << (*max_element(vec.begin(), vec.end())) << endl; cout << "The index of maximum element : "; cout << max_element(vec.begin(), vec.end()) - vec.begin(); }
Max element is : 60 The index of maximum element : 3
查找索引的另一种方法是使用std::distance()方法。我们将如下使用它-
#include <bits/stdc++.h> using namespace std; int main(){ vector<int< vec = { 10, 40, 50, 60, 30}; cout << "Max element is : " << (*max_element(vec.begin(), vec.end())) << endl; cout << "The index of maximum element : "; cout << distance(vec.begin(), max_element(vec.begin(), vec.end())); }
Max element is : 60 The index of maximum element : 3