From 1b9dfdd93e8697d1502e81a089f2c2b60ba1094f Mon Sep 17 00:00:00 2001
From: Norihiro Watanabe <norihiro.watanabe@ufz.de>
Date: Thu, 4 Sep 2014 16:33:54 +0200
Subject: [PATCH] use Node::getElements()

---
 MeshLib/MeshSearcher.cpp | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/MeshLib/MeshSearcher.cpp b/MeshLib/MeshSearcher.cpp
index 23923d626ab..ce848e49e32 100644
--- a/MeshLib/MeshSearcher.cpp
+++ b/MeshLib/MeshSearcher.cpp
@@ -13,20 +13,24 @@
 #include "Node.h"
 #include "Elements/Element.h"
 
+#include <algorithm>
+
 namespace MeshLib
 {
 
 std::vector<std::size_t> getConnectedElements(MeshLib::Mesh const& msh, const std::vector<std::size_t> &nodes)
 {
 	std::vector<std::size_t> connected_elements;
-	for (auto* e : msh.getElements()) {
-		for (std::size_t j=0; j<e->getNNodes(); j++) {
-			if (std::find(nodes.begin(), nodes.end(), e->getNodeIndex(j))!=nodes.end()) {
+	std::for_each(nodes.begin(), nodes.end(),
+		[&](std::size_t node_id)
+		{
+			for (auto* e : msh.getNode(node_id)->getElements()) {
 				connected_elements.push_back(e->getID());
-				break;
 			}
-		}
-	}
+		});
+	std::sort(connected_elements.begin(), connected_elements.end());
+	auto it = std::unique(connected_elements.begin(), connected_elements.end());
+	connected_elements.resize(std::distance(connected_elements.begin(),it));
 	return connected_elements;
 }
 
-- 
GitLab