Trong phần này, chúng ta sẽ xem cách tạo chỉ mục bằng cách sử dụng các con trỏ được trả về bởi STL trong C ++. Như chúng ta đã biết, nhiều hàm có sẵn trong C ++ trả về con trỏ đến vị trí trong bộ nhớ, nơi cung cấp địa chỉ của số mong muốn, nhưng nó không có mối liên hệ nào với chỉ mục thực tế trong vùng chứa giá trị được trả về. Ví dụ, để xác định phần tử tối đa trong mã, chúng ta sử dụng hàm std ::max_element (), hàm này không trả về chỉ số của phần tử mong muốn mà trả về địa chỉ trong bộ nhớ. Nhưng đôi khi, chúng ta cần lấy chỉ mục từ địa chỉ đó. Ở đây, chúng ta sẽ xem cách chúng ta có thể tạo chỉ mục.
Trừ biến lặp đầu tiên
Từ phương thức containerner.begin (), chúng ta sẽ nhận được địa chỉ của vị trí đầu tiên. Bây giờ trừ đi địa chỉ bắt đầu từ địa chỉ trả về, chúng ta có thể nhận được sự khác biệt. Từ đó, chúng tôi có thể tìm thấy chỉ mục.
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#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(); }
Đầu ra
Max element is : 60 The index of maximum element : 3
Một cách khác để tìm chỉ mục là sử dụng phương thức std ::distance (). Chúng tôi sẽ sử dụng nó như bên dưới -
Ví dụ
#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())); }
Đầu ra
Max element is : 60 The index of maximum element : 3