On Jul 6, 2:25 am, Ivan Novick <i...@novickmail.comwrote:
On Jul 5, 4:43 pm, Sean Dalton <sean.dalton...@yahoo.cawrote:
I have a two sets OLDLIST and REMOVE.
I would like to remove every element in OLDLIST if it is
also occuring in REMOVE and store the remaining elements
from OLDLIST into NEWLIST.
So far, I have read in both lists but I'm struggling
comparing the elements
- I have something like
double oldlist[oldsize];
double remove[remsize];
for(i = 0; i < oldsize; i++)
{
for(k = 0; k < remsize; k ++)
if(oldlist[i] != remove[k])
{
cout<<oldlist[k]<<endl;
}
}
Are you sure you want to use arrays to store your data?
Since the sizes are changing, he obviously needs std::vector,
and not C style arrays.
This would be a n-squared algorithm.
Not if the vectors are sorted first. If both vectors are
sorted, it's O(n) and if only only the remove list is sorted,
it's O(n ln m) (where n is the number of elements in the old
vector, and m the number of elements in the remove list).
Better would be to store the remove set into a hash_map or
some other container which can do a constant time lookup to
see if you need to remove the data.
If you can find a good hash function for double, let us know.
--
James Kanze (GABI Software) email:ja*********@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34