Index (int) eines CList - Elements ermitteln



  • Hallo Gemeinde,

    ich iteriere durch eine CList, um ein bestimmtes Element zu finden.
    Dazu habe ich eine Funktion geschrieben welche mir im Erfolgsfall ein POSITION zurückgibt. Ich würde zusätzlich gern noch per Referenz den Index des gefundenen Elements in der Liste als int zurückgeben, also an welcher Stelle in der Liste wurde das Element gefunden. Gibt es dazu noch ein andere Lösung als einen Counter zu inkrementieren?



  • Gegenfrage: was gefällt dir an der Lösung nicht?
    Bzw. in welcher Hinsicht erhoffst du dir eine Verbesserung?



  • Um ein Element in der Liste zu finden bietet sich CList::Find() an.
    Ein Funktion um den Index aus POSITION zu ermitteln ist mit nicht bekannt, wenn man sowas braucht bietet sich ein CArray an.

    Aus dem Codeguru-Forum habe ich folgendes

    bool IndexFromPosition(CList<CString,CString&>& List, const POSITION& p, int& Index)
    {	
    	bool bFound = false;
    	int i = 0;
    	for(POSITION pos = List.GetHeadPosition(); !bFound && NULL != pos; ++i )
    	{
    		if(p == pos)
    		{
    			Index = i;
    			bFound = true;
    		}
    
    		List.GetNext(pos);
    	}
    
    	return bFound;
    }
    

Anmelden zum Antworten