有两个数组allPushedIndX,allPushedIndY长度均为allPushedIndSize,并且两个数组的元素根据索引一一对应,现在需要按照allPushedIndX中相同的元素把allPushedIndY中对应的元素归类,用C++实现
时间: 2024-02-18 07:05:28 浏览: 94
可以使用哈希表(unordered_map)来实现,建立一个以allPushedIndX中的元素为键,allPushedIndY中的元素为值的哈希表。遍历allPushedIndX数组,将相同元素的值存入同一个vector中,最后将所有vector存入一个vector中即可。
以下是示例代码:
```cpp
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
vector<vector<int>> classify(vector<int>& allPushedIndX, vector<int>& allPushedIndY) {
unordered_map<int, vector<int>> mp; // 建立哈希表
for(int i = 0; i < allPushedIndX.size(); i++) {
mp[allPushedIndX[i]].push_back(allPushedIndY[i]); // 将元素存入对应的vector中
}
vector<vector<int>> res;
for(auto it = mp.begin(); it != mp.end(); it++) {
res.push_back(it->second); // 将所有vector存入一个vector中
}
return res;
}
int main() {
vector<int> allPushedIndX = {1, 2, 3, 1, 2, 3};
vector<int> allPushedIndY = {4, 5, 6, 7, 8, 9};
vector<vector<int>> res = classify(allPushedIndX, allPushedIndY);
for(int i = 0; i < res.size(); i++) {
cout << "Class " << i << ": ";
for(int j = 0; j < res[i].size(); j++) {
cout << res[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
输出结果为:
```
Class 0: 4 7
Class 1: 5 8
Class 2: 6 9
```
阅读全文