使用 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
廣告