Dev - C++ - Funciones con vectores

 
Vista:
Imágen de perfil de Dennis
Val: 141
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Funciones con vectores

Publicado por Dennis (63 intervenciones) el 18/05/2021 23:45:24
Hola a todos y saludos.
Tengo dos dudas:
1- Porque cuando llamo a las funciones "crearLista & mostrarLista" me da error.
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
31
#include <iostream>
#include <conio.h>
#include <vector>
 
using namespace std;
 
void crearLista(int lista);
void mostrarLista(int lista);
 
int main(){
 
    vector <int> lista;
 
   crearLista(lista);
   mostrarLista(lista);
 
    getch();
    return 0;
}
 
void crearLista(vector <int> lista){
     for(int i = 1; i <= 10; ++i){
        lista.push_back(i);
    }
}
 
void mostrarLista(vector <int> lista){
    for(int i = 1; i <= 10; ++i){
        cout<< lista[i] << " ";
    }
}

2- Como hago para eliminar elementos de un vector.
Ejemplo: quiero sacar todos los números pares del vector y quedaría asi:
> 1 3 5 7 9
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: 338
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Funciones con vectores

Publicado por Martín (158 intervenciones) el 19/05/2021 14:49:39
1) Porque tienes mal declarados los prototipos de las funciones, y crearLista() debería tomar la lista por referencia mientras que mostrarLista() debería tomar la lista por referencia constante.

2) ¿Cómo eliminar elementos pares? Va un ejemplo con la función eliminarPares(), que usa vector::erase y std::remove_if. Como toma al vector lista por referencia lo está modificando, si no deseas que se modifique el vector original deberías pasarlo por valor (hacer una copia), y devolver la copia modificada.

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
31
32
33
34
35
36
37
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
void crearLista(vector<int>& lista) {
    for (int i = 1; i <= 10; ++i) {
        lista.push_back(i);
    }
}
 
void mostrarLista(const vector<int>& lista) {
    for (auto i : lista) { // un vector sabe cuántos elementos tiene
        cout << i << " ";
    }
    cout << '\n';
}
 
void eliminarPares(vector<int>& lista)
{
    lista.erase(remove_if(lista.begin(), lista.end(),
        [](int i) {return i % 2 == 0; }), lista.end());
}
 
int main() {
 
    vector<int> lista;
 
    crearLista(lista);   // pasa por referencia
    mostrarLista(lista); // pasa por referencia constante
 
    eliminarPares(lista);
    mostrarLista(lista);
 
    return 0; // puedes poner un breakpoint para que se detenga aquí.
}
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
Imágen de perfil de Dennis
Val: 141
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Funciones con vectores

Publicado por Dennis (63 intervenciones) el 19/05/2021 22:39:41
Gracias por todo, ha sido de gran ayuda
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