Dev - C++ - vector: asignar valores y mostrarlos mediante dos funciones

 
Vista:
sin imagen de perfil

vector: asignar valores y mostrarlos mediante dos funciones

Publicado por connectee (4 intervenciones) el 05/01/2016 16:27:08
Quiero crear un vector “valores”,
asignarle valores ( función asignarVector() )
y
mostrar sus valores ( mostrarVector() ).

Pienso en un código como el siguiente, pero no entiendo por qué fallo. ¡Gracias!
(Mi IDE y el proyecto están configurados a c++14.)

Captura

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
using namespace std;
 
void asignarVector(vector<int>);
void mostrarVector(vector<int>);
 
int main()
{
    vector<int> valores;
    asignarVector(valores);
    mostrarVector(valores);
 
return 0;
}
 
void asignarVector(vector<int> vect)
{
    for (int cont = 0; cont < 10; cont++)
    vect.push_back(cont);
}
 
void mostrarVector(vector<int> vect)
{
    // sólo uno de los dos bucles: prefiero for basado en rango
    for (auto valor : vect)
        cout << valor << endl;
    //for (unsigned long int cont = 0; cont < vect.size(); cont++)
        //cout << vect[cont] << endl;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

vector: asignar valores y mostrarlos mediante dos funciones

Publicado por Thanatos (199 intervenciones) el 05/01/2016 19:35:44
Necesitas declarar el parámetro de la función asignarVector como referencia.

La función mostrarVector no requiere realizar la anterior modificación para funcionar como se espera, pero al declarar su parámetro como referencia, evitarás hacer una copia innecesaria (del argumento), dentro de la función.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <vector>
 
void asignarVector(std::vector<int>&);
void mostrarVector(const std::vector<int>&);
 
int main() {
    std::vector<int> valores;
 
    asignarVector(valores);
    mostrarVector(valores);
 
    return 0;
}
 
void asignarVector(std::vector<int>& vect) {
    for (int cont = 0; cont < 10; ++cont)
        vect.push_back(cont);
}
 
void mostrarVector(const std::vector<int>& vect) {
    for (const auto& valor : vect)
        std::cout << valor << std::endl;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

vector: asignar valores y mostrarlos mediante dos funciones

Publicado por connectee (4 intervenciones) el 05/01/2016 19:43:04
¡Qué bien!
Gracias, Thanatos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar