使用 C++ 中 STL 函式返回的指標計算索引


在本節中,我們將瞭解如何在 C++ 中使用 STL 返回的指標生成索引。眾所周知,C++ 中許多內建函式會返回指向記憶體位置的指標,該指標提供了所需數字的地址,但它與返回的值在容器中的實際索引無關。例如,要確定程式碼中的最大元素,我們使用 std::max_element() 函式,它不會返回所需元素的索引,而是返回記憶體中的地址。但有時,我們需要從該地址獲取索引。在這裡,我們將瞭解如何生成索引。

減去第一個迭代器

從容器的 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

更新於: 2020-08-27

133 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告