#include <iostream>
#include <string>
#include <vector>
#include <set>
using std::string;
using std::cout;
using std::set;
using std::vector;
// Function to create unique subarrays
vector<vector<string>> arrayUnique(const vector<vector<string>>& arr) {
set<string> uniqueSet; // Set to store unique subarrays as strings
vector<vector<string>> uniqueArray;
for (const auto& subArray : arr) {
string serialized = "";
for (const auto& element : subArray) {
serialized += element + ","; // Serialize subarray elements
}
if (uniqueSet.find(serialized) == uniqueSet.end()) {
uniqueSet.insert(serialized); // Add serialized subarray to set
uniqueArray.push_back(subArray); // Add original subarray to result
}
}
return uniqueArray;
}
int main() {
vector<vector<string>> array = {
{"abc", "def"},
{"ghi", "jkl"},
{"mno", "pqr"},
{"abc", "def"},
{"ghi", "jkl"},
{"mno", "pqr"}
};
vector<vector<string>> uniqueArray = arrayUnique(array);
for (const auto& subArray : uniqueArray) {
for (const auto& element : subArray) {
cout << element << " ";
}
cout << "\n";
}
return 0;
}
/*
run:
abc def
ghi jkl
mno pqr
*/