
nouveau fichier : include/ArrayTree/ArrayTreeBuilder.tpp nouveau fichier : include/ArrayTree/Border.hpp nouveau fichier : include/ArrayTree/GraphWalker.hpp nouveau fichier : include/ArrayTree/Leader.hpp nouveau fichier : include/ArrayTree/Weight.hpp nouveau fichier : include/ArrayTree/Weight.tpp nouveau fichier : include/ArrayTree/triskeleArrayTreeBase.hpp nouveau fichier : include/ArrayTree/triskeleSort.hpp nouveau fichier : include/ArrayTree/triskeleSort.tpp modifié : include/Attribute.hpp modifié : include/Attributes/AreaAttribute.hpp supprimé : include/BuildTree.hpp supprimé : include/DAPTree/Border.hpp supprimé : include/DAPTree/DAPTreeBuilder.hpp supprimé : include/DAPTree/DAPTreeBuilder.tpp supprimé : include/DAPTree/GraphWalker.hpp supprimé : include/DAPTree/ParRnk.hpp supprimé : include/DAPTree/Weight.hpp supprimé : include/DAPTree/baseDAPTree.hpp supprimé : include/DAPTree/sort.hpp nouveau fichier : include/IImage.hpp nouveau fichier : include/IImage.tpp supprimé : include/ImageInterface.hpp supprimé : include/ImageInterface.tpp modifié : include/QuadTree/QuadTreeBuilder.hpp modifié : include/Tree.hpp nouveau fichier : include/TreeBuilder.hpp supprimé : include/TreeOfShapesGeraud/ToSBuilder.hpp supprimé : include/TreeOfShapesGeraud/ToSutils.hpp modifié : include/XMLTree/XMLTreeBuilder.hpp supprimé : include/baseDef.hpp supprimé : include/getType.hpp nouveau fichier : include/triskeleBase.hpp renommé : include/dealThreads.hpp -> include/triskeleDealThreads.hpp nouveau fichier : include/triskeleDealThreads.tpp renommé : include/debug.hpp -> include/triskeleDebug.hpp nouveau fichier : include/triskeleGdalGetType.hpp modifié : otb-module.cmake nouveau fichier : src/ArrayTree/triskeleArrayTreeBase.cpp modifié : src/Attribute.cpp modifié : src/Attributes/AreaAttribute.cpp modifié : src/CMakeLists.txt supprimé : src/DAPTree/GraphWalker.cpp supprimé : src/DAPTree/ParRnk.cpp supprimé : src/DAPTree/baseDAPTree.cpp supprimé : src/DAPTree/sort.cpp modifié : src/QuadTree/QuadTreeBuilder.cpp modifié : src/Tree.cpp supprimé : src/TreeOfShapesGeraud/ToSBuilder.cpp supprimé : src/TreeOfShapesGeraud/ToSutils.cpp modifié : src/XMLTree/XMLTreeBuilder.cpp supprimé : src/debug.cpp modifié : src/testMain.cpp nouveau fichier : src/triskeleDebug.cpp supprimé : tests/ToSGeraudCoord.txt supprimé : tests/ToSGeraudIdx.ods
53 lines
1.6 KiB
C++
53 lines
1.6 KiB
C++
#ifndef _OTB_TRISKELE_ARRAY_TREE_SORT_TPP
|
|
#define _OTB_TRISKELE_ARRAY_TREE_SORT_TPP
|
|
|
|
// ========================================
|
|
template <typename T>
|
|
inline vector<T> getRandReduce (vector<T> index, T reduceCount);
|
|
|
|
template <typename E, typename WeightT, typename DimImg, typename WeightFunct>
|
|
inline DimImg mergeSort (E *dst, const vector<E *> &tab, const vector<DimImg> &tabSize, const WeightFunct &weightFunct);
|
|
|
|
// ========================================
|
|
template <typename T>
|
|
inline vector<T> getRandReduce (vector<T> index, T reduceCount) {
|
|
T size = index.size ();
|
|
if (reduceCount >= size)
|
|
return index;
|
|
for (T i = 0; i < size; ++i) {
|
|
T j = rand () % size;
|
|
T tmp = index [i];
|
|
index [i] = index [j];
|
|
index [j] = tmp;
|
|
}
|
|
vector<T> result (&index [0], &index[reduceCount]);
|
|
return result;
|
|
}
|
|
|
|
template <typename E, typename WeightT, typename DimImg, typename WeightFunct>
|
|
inline DimImg mergeSort (E *dst, const vector<E *> &tab, const vector<DimImg> &tabSize, const WeightFunct &weightFunct) {
|
|
DimImg count = 0;
|
|
vector<DimImg> curIdx (tab.size (), 0);
|
|
for (;;) {
|
|
int minIdx = -1;
|
|
WeightT minLevel = 0;
|
|
for (DimImg i = 0; i < curIdx.size (); ++i) {
|
|
if (curIdx[i] >= tabSize[i])
|
|
continue;
|
|
if (minIdx >= 0 &&
|
|
!weightFunct.isWeightInf (tab[i][curIdx[i]], minLevel))
|
|
continue;
|
|
minIdx = i;
|
|
minLevel = tab[i][curIdx[i]];
|
|
// LOG ("set minIdx:" << minIdx << " minLevel:" << minLevel);
|
|
}
|
|
if (minIdx < 0)
|
|
break;
|
|
*dst++ = tab[minIdx][curIdx[minIdx]++];
|
|
++count;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
#endif // _OTB_TRISKELE_ARRAY_TREE_SORT_TPP
|