Galleria mappe mentale Attraversamento del ciclo TMap
Attraversamento del ciclo di TMap in UEC (implica principalmente la modifica del valore originale), inclusi esempi di codice, Analisi del problema, Metodi di modifica, ecc.
Modificato alle 2024-02-01 10:23:17Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Attraversamento del ciclo TMap
esempio di codice
TMap<FVerticalCurveInfo, FVerticalCurveDatas> UVerticalCurveAlgorithm::Calculate_VerticalCurveDataMap_StartEnd( UPARAM(rif) TMap<FVerticalCurveInfo, FVerticalCurveDatas>& InVerticalCurve) { per (Curva verticale automatica: Curva verticale) { for (int32 i = 0; i < VerticalCurve.Value.Datas.Num(); i) { if (VerticalCurve.Value.Datas[i].PointTangencyType == EPointTangencyType::PointTangencyType) { VerticalCurve.Value.Datas[i].Elevation_Start = VerticalCurve.Value.Datas[i].Elevation_PointTangency - VerticalCurve.Value.Datas[i].T * VerticalCurve.Value.Datas[i].Grade; VerticalCurve.Value.Datas[i].Elevation_End = VerticalCurve.Value.Datas[i].Elevation_PointTangency VerticalCurve.Value.Datas[i].T * VerticalCurve.Value.Datas[i 1].Grade; } } } return InCurvaVerticale; }
Analisi del problema
In questo codice, l'intenzione è modificare alcuni valori del parametro passato per riferimento. Tuttavia, il risultato dell'esecuzione del codice è che la modifica non riesce.
Il problema risiede nel ciclo for (auto VerticalCurve: InVerticalCurve). In questo ciclo, VerticalCurve è un elemento copiato, non un riferimento all'elemento nella InVerticalCurve originale. Pertanto, le modifiche a VerticalCurve non influenzeranno gli elementi nella InVerticalCurve originale.
Per modificare i parametri passati per riferimento, è possibile utilizzare un ciclo di riferimento basato su intervallo oppure utilizzare un iteratore.
Metodo di modifica
Utilizza cicli basati su riferimenti
TMap<FVerticalCurveInfo, FVerticalCurveDatas> UVerticalCurveAlgorithm::Calculate_VerticalCurveDataMap_StartEnd( UPARAM(rif) TMap<FVerticalCurveInfo, FVerticalCurveDatas>& InVerticalCurve) { per (auto e Curva verticale: InCurva verticale) { for (int32 i = 0; i < VerticalCurve.Value.Datas.Num(); i) { if (VerticalCurve.Value.Datas[i].PointTangencyType == EPointTangencyType::PointTangencyType) { VerticalCurve.Value.Datas[i].Elevation_Start = VerticalCurve.Value.Datas[i].Elevation_PointTangency - VerticalCurve.Value.Datas[i].T * VerticalCurve.Value.Datas[i].Grade; VerticalCurve.Value.Datas[i].Elevation_End = VerticalCurve.Value.Datas[i].Elevation_PointTangency VerticalCurve.Value.Datas[i].T * VerticalCurve.Value.Datas[i 1].Grade; } } } return InCurvaVerticale; }
Auto& viene utilizzato qui per garantire che VerticalCurve sia un riferimento all'elemento nella InVerticalCurve originale. Invece di copiare il valore, in questo modo, le modifiche alla VerticalCurve influenzeranno la InVerticalCurve originale.
Usa l'iteratore
TMap<FVerticalCurveInfo, FVerticalCurveDatas> UVerticalCurveAlgorithm::Calculate_VerticalCurveDataMap_StartEnd( UPARAM(rif) TMap<FVerticalCurveInfo, FVerticalCurveDatas>& InVerticalCurve) { for (auto It = InVerticalCurve.CreateIterator(); It; It) { for (int32 i = 0; i < It.Value().Datas.Num(); i) { if (It.Value().Datas[i].PointTangencyType == EPointTangencyType::PointTangencyType) { It.Value().Datas[i].Elevation_Start = It.Value().Datas[i].Elevation_PointTangency - It.Value().Datas[i].T * It.Value().Datas[i]. Grado; It.Value().Datas[i].Elevation_End = It.Value().Datas[i].Elevation_PointTangency It.Value().Datas[i].T * It.Value().Datas[i 1]. Grado; } } } return InCurvaVerticale; }
In questo esempio modificato, CreateIterator() viene utilizzato per ottenere l'iteratore TMap, quindi viene utilizzato nel ciclo per accedere agli elementi. In questo modo possiamo modificare direttamente It.Value() e quindi la InVerticalCurve originale