Arrayinmhalte vergleichen



  • Hi,

    gibt es eine möglichkeit zu gucken, ob Elemente eines Array auch in einem anderen vorhanden ist. Der erste Versuch (unten) war in der Hinsicht schlecht, da die if_Abfrage manchmal TRUE, machmal FALSE ist (durch die verschiedenen c und b Werte)

    for(int b = 0; b<isizeFrameElemente; b++) {
    				for(int c = 0; c<isizeFrameElement; c++) {
    					if(iFrameElemente[b] == iFrameElement[c]) {
    						m_pGUI->GetElement(iFrameElemente[b])->Show(TRUE); }
    					else {
    					m_pGUI->GetElement(iFrameElemente[b])->Show(FALSE);	}
    				}
    		}
    


  • hmm, ich denke dieser Code funktioniert nur dann, wenn du genau weisst, welches Element du auf Vorhandensein im anderen Array ueberpruefen willst. Das koenntest du dann verwenden, um das andere Array zu ueberpruefen, ob es vorhanden sind.
    Du koenntest also den Code so umbasteln, das er einfach nur schaut, ob ein Element, das du als Parameter uebergibst, vorhanden sind und diese Funktion dann fuer jedes Element des Arrays iFrameElement aufrufen



  • Hallo,
    eine ganz simple Variante:

    template <class T>
    bool hasIntersection(T* arr1beg, T* arr1end, T* arr2beg, T* arr2end)
    {
    	for(T* outerRun = arr1beg; outerRun != arr1end; ++outerRun) 
    		for(T* innerRun = arr2beg; innerRun != arr2end ; ++innerRun) 
    			if(*outerRun == *innerRun) 
    				return true;
    	return false;
    }
    

    Der Aufruf geht dann z.B. so:

    int main() 
    { 
    	int arr1[5] = {1,2,3,4,5};
    	int arr2[6] = {6,5,8,9,10,11};
    
    	cout << "Intersection: " << boolalpha 
    		 << hasIntersection(arr1, arr1+5, arr2, arr2+6) << endl;
    }
    

Anmelden zum Antworten