天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 211|回复: 0

整个二维向量中去除完全相同的行

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-3-19 12:29:18 | 显示全部楼层 |阅读模式
  1. #include <vector>
  2. #include <unordered采用set>
  3. #include <algorithm>
  4. struct VectorHash {
  5.     size采用t operator()(const std::vector<double>& vec) const {
  6.         size采用t hash = 0;
  7.         for (double val : vec) {
  8.             hash ^= std::hash<double>{}(val) + 0x9e3779b9 + (hash << 6) + (hash >> 2);
  9.         }
  10.         return hash;
  11.     }
  12. };
  13. bool equalVectors(const std::vector<double>& v1, const std::vector<double>& v2) {
  14.     if (v1.size() != v2.size()) return false;
  15.     std::sort(v1.begin(), v1.end());
  16.     std::sort(v2.begin(), v2.end());
  17.     return v1 == v2;
  18. }
  19. std::vector<std::vector<double>> removeDuplicateRows(const std::vector<std::vector<double>>& matrix) {
  20.     std::unordered采用set<std::vector<double>, VectorHash, decltype(equalVectors)*> uniqueRows(&equalVectors);
  21.     std::vector<std::vector<double>> result;
  22.     for (const auto& row : matrix) {
  23.         if (uniqueRows.find(row) == uniqueRows.end()) {
  24.             // 如果当前行不在哈希集合中,则添加到结果向量和哈希集合中
  25.             result.push采用back(row);
  26.             uniqueRows.insert(row);
  27.         }
  28.     }
  29.     return result;
  30. }
  31. int main() {
  32.     std::vector<std::vector<double>> matrix = {{1.0, 2.0, 2.0, 3.0},
  33.                                               {1.0, 2.0, 3.0, 1.0},
  34.                                               {3.0, 2.0, 2.0, 1.0},
  35.                                               {4.0, 4.0, 5.0},
  36.                                               {6.0, 6.0, 7.0, 7.0, 7.0}};
  37.     std::vector<std::vector<double>> result = removeDuplicateRows(matrix);
  38.     // 输出结果
  39.     for (const auto& row : result) {
  40.         for (double val : row) {
  41.             std::cout << val << " ";
  42.         }
  43.         std::cout << std::endl;
  44.     }
  45.     return 0;
  46. }
复制代码

 

 

 

 

整个二维向量中去除完全相同的行
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 09:02 , Processed in 0.138678 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表