使用C ++中STL函数返回的指针计算索引

在本节中,我们将看到如何使用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
猜你喜欢