Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng chỉ mục tối thiểu cho các phần tử chung của hai danh sách trong C ++

Giả sử hai người muốn chọn các thành phố khác nhau, họ đã liệt kê ra các thành phố trong danh sách khác nhau, chúng ta phải giúp tìm ra những lựa chọn chung. Vì vậy, chúng tôi cần tìm những thành phố đó, những thành phố được đánh dấu bởi cả hai.

Thao tác này rất giống với thuộc tính set giao nhau, chúng ta sẽ lấy hai danh sách làm tập hợp, sau đó thực hiện giao điểm tập hợp để lấy các phần tử chung.

Ví dụ

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> commonInterest(string set1[], int n1, string set2[], int n2) {
   vector<string> v(min(n1, n2));
   vector<string>::iterator it;
   // Sorting both the list
   sort(set1, set1 + n1);
   sort(set2, set2 + n2);
   it = set_intersection(set1, set1 + n1, set2, set2 + n2,
   v.begin());
   return v;
}
int main() {
   string first[] = { "Kolkata", "Hyderabad", "Chennai", "Delhi" };
   int n1 = sizeof(first) / sizeof(first[0]);
   string second[] = { "Mumbai", "Kolkata", "Durgapur", "Delhi" };
   int n2 = sizeof(second) / sizeof(second[0]);
   vector<string> v = commonInterest(first, n1, second, n2);
   cout << "Common cities: ";
   for (int i = 0; i < v.size(); i++)
      cout << ' ' << v[i];
   cout << endl;
}

Đầu ra

Common cities: Delhi Kolkata