From 802e51f7f28c199c294b762ac801ae28366f3e84 Mon Sep 17 00:00:00 2001 From: sunwen Date: Wed, 14 Jun 2023 11:01:21 +0800 Subject: [PATCH] Add uniqueByRows. --- src/Function1D.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++++ src/Function1D.h | 2 ++ 2 files changed, 87 insertions(+) diff --git a/src/Function1D.cpp b/src/Function1D.cpp index d4b7195..11542a0 100644 --- a/src/Function1D.cpp +++ b/src/Function1D.cpp @@ -123,6 +123,45 @@ namespace { des[3] = outputPtr[3]; } + + bool compare(const Matrix& aA, const Matrix& aB) + { + size_t dataSize = aA.getDataSize(); + size_t sizeB = aB.getDataSize(); + if(dataSize > sizeB) + { + dataSize = sizeB; + } + + for(size_t i=0; i uniqueResult; + for(int i=1; i<=columns; ++i) + { + Matrix rowData = Matrix::fromRawData(new double[rows], rows); + std::copy(transposeMatrixData, transposeMatrixData + rows, rowData.getData()); + uniqueResult.push_back(rowData); + transposeMatrixData += rows; + } + + std::vector matrixsCopy = uniqueResult; + std::sort(uniqueResult.begin(), uniqueResult.end(), compare); + auto uniqueIndex = std::unique(uniqueResult.begin(), uniqueResult.end(), isEqual); + uniqueResult.erase(uniqueIndex, uniqueResult.end()); + + std::vector indexResultData; + for(int i=0; i