RemoveDuplicates
This routine removes duplicate entries from the set of integer.
note
RemoveDuplicates
will perform reallocation. If you do not want reallocation then use RemoveDuplicates_
Calling example:
CALL RemoveDuplicates(avec)
Without reallocation:
CALL RemoveDuplicates_(avec, tsize, isSorted)
Interface
- ܀ Interface
- ️܀ See example
- ↢
INTERFACE RemoveDuplicates
MODULE PURE SUBROUTINE RemoveDuplicates_1a(obj)
INTEGER(INT8), ALLOCATABLE, INTENT(INOUT) :: obj(:)
END SUBROUTINE RemoveDuplicates_1a
MODULE PURE SUBROUTINE RemoveDuplicates_1b(obj)
INTEGER(INT16), ALLOCATABLE, INTENT(INOUT) :: obj(:)
END SUBROUTINE RemoveDuplicates_1b
MODULE PURE SUBROUTINE RemoveDuplicates_1c(obj)
INTEGER(INT32), ALLOCATABLE, INTENT(INOUT) :: obj(:)
END SUBROUTINE RemoveDuplicates_1c
MODULE PURE SUBROUTINE RemoveDuplicates_1d(obj)
INTEGER(INT64), ALLOCATABLE, INTENT(INOUT) :: obj(:)
END SUBROUTINE RemoveDuplicates_1d
END INTERFACE RemoveDuplicates
This example shows the usage of RemoveDuplicates
method which is defined in IntegerUtility
MODULE
program main
use easifembase
implicit none
integer(i4b), allocatable :: intvec( : )
intvec = [ 5, 4, 4, 4, 3, 3, 2, 2, 1, 1, 1 ]
call RemoveDuplicates( intvec )
call display( intvec, "intvec = " )
end program main
Results
intvec =
---------
1
2
3
4
5
Interface 2
- Interface
- example
- ↢ close
INTERFACE RemoveDuplicates_
MODULE PURE SUBROUTINE RemoveDuplicates_1a_(obj, tsize, isSorted)
INTEGER(INT8), INTENT(INOUT) :: obj(:)
!! obj(1:tsize) will have unique entries
LOGICAL(LGT), INTENT(IN) :: isSorted
!! if obj is sorted then set isSorted to true
INTEGER(I4B), INTENT(OUT) :: tsize
!! number of unique entries found
END SUBROUTINE RemoveDuplicates_1a_
MODULE PURE SUBROUTINE RemoveDuplicates_1b_(obj, tsize, isSorted)
INTEGER(INT16), INTENT(INOUT) :: obj(:)
!! obj(1:tsize) will have unique entries
LOGICAL(LGT), INTENT(IN) :: isSorted
!! if obj is sorted then set isSorted to true
INTEGER(I4B), INTENT(OUT) :: tsize
!! number of unique entries found
END SUBROUTINE RemoveDuplicates_1b_
MODULE PURE SUBROUTINE RemoveDuplicates_1c_(obj, tsize, isSorted)
INTEGER(INT32), INTENT(INOUT) :: obj(:)
!! obj(1:tsize) will have unique entries
LOGICAL(LGT), INTENT(IN) :: isSorted
!! if obj is sorted then set isSorted to true
INTEGER(I4B), INTENT(OUT) :: tsize
!! number of unique entries found
END SUBROUTINE RemoveDuplicates_1c_
MODULE PURE SUBROUTINE RemoveDuplicates_1d_(obj, tsize, isSorted)
INTEGER(INT64), INTENT(INOUT) :: obj(:)
!! obj(1:tsize) will have unique entries
LOGICAL(LGT), INTENT(IN) :: isSorted
!! if obj is sorted then set isSorted to true
INTEGER(I4B), INTENT(OUT) :: tsize
!! number of unique entries found
END SUBROUTINE RemoveDuplicates_1d_
END INTERFACE RemoveDuplicates_
PROGRAM main
USE easifembase
IMPLICIT NONE
INTEGER(i4b), ALLOCATABLE :: intvec(:)
INTEGER(I4B) :: tsize
intvec = [5, 4, 4, 4, 3, 3, 2, 2, 1, 1, 1]
CALL RemoveDuplicates_(intvec, tsize, .FALSE.)
CALL Display(intvec(1:tsize), "intvec = ")
END PROGRAM main