va_copy
Von cppreference.com
| Definiert im Header <cstdarg> |
||
| void va_copy( std::va_list dest, std::va_list src ); |
(seit C++11) | |
Das Makro va_copy kopiert src nach dest.
va_end sollte für dest aufgerufen werden, bevor die Funktion zurückkehrt oder eine nachfolgende Reinitialisierung von dest (durch Aufrufe von va_start oder va_copy).
Inhalt |
[bearbeiten] Parameter
| dest | - | eine Instanz vom Typ va_list, die initialisiert werden soll |
| src | - | die Quell- va_list, die zur Initialisierung von dest verwendet wird |
[bearbeiten] Erweiterter Wert
(keine)
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <cmath> #include <cstdarg> #include <iostream> double sample_stddev(int count, ...) { double sum = 0; std::va_list args1; va_start(args1, count); std::va_list args2; va_copy(args2, args1); for (int i = 0; i < count; ++i) { double num = va_arg(args1, double); sum += num; } va_end(args1); double mean = sum / count; double sum_sq_diff = 0; for (int i = 0; i < count; ++i) { double num = va_arg(args2, double); sum_sq_diff += (num - mean) * (num - mean); } va_end(args2); return std::sqrt(sum_sq_diff / count); } int main() { std::cout << sample_stddev(4, 25.0, 27.3, 26.9, 25.7) << '\n'; }
Ausgabe
0.920258
[bearbeiten] Siehe auch
| ermöglicht den Zugriff auf variadische Funktionsargumente (Funktionsmakro) | |
| greift auf das nächste variadische Funktionsargument zu (Funktionsmakro) | |
| beendet die Durchquerung der variadischen Funktionsargumente (Funktionsmakro) | |
| C-Dokumentation für va_copy
| |