Tengo una función,C++ Argumento predeterminado para el vector <int> &?
void test(vector<int>& vec);
¿Cómo puedo establecer el argumento por defecto para vec? He tratado
void test(vector<int>& vec = vector<int>());
Pero hay una advertencia de "extensión no estándar utilizado: 'argumento por defecto': la conversión de 'std :: vector < _Ty>' a 'std :: vector < _Ty> &'"
¿Hay una mejor manera de hacer esto? En lugar de
void test() {
vector<int> dummy;
test(dummy);
}
Saludos, Voteforpedro
+1 pero creo que debería señalarse que 'prueba' generalmente no sería seguro para subprocesos si fuera a modificar este 'DEFAULT_VECTOR'. Puede ser tedioso, pero recomiendo escribir dos funciones para tales necesidades (una puede reutilizar la otra): prueba vacía() {vector temp; prueba (temperatura); } –
stinky472
@ stinky472: Gracias, actualicé mi respuesta. – ereOn
Como nota al margen, hay una forma estrafalaria de obtener una referencia a un temporal si puede usar algún método en este último que devuelva dicha referencia a sí mismo ... p. 'operator ='. Por lo tanto, 'prueba vacía (vector y vec = vector () .operator = (vector ()));' debería funcionar (la duración del temporal no se ve afectada aquí y seguirá siendo suficiente para manejar la llamada). Pero por favor no lo hagas :) –