Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: <<<-Basura->>> en 25 Marzo 2013, 22:18 pm



Título: java ArrayList en C++
Publicado por: <<<-Basura->>> en 25 Marzo 2013, 22:18 pm
Bueno como dice el titulo estoy buscando la forma de hacer listas dinámicas en C++.. de la misma forma que lo logro con el ArrayList en java...

Si me pueden decir que librería usar y Algún ejemplo.

, Gracias


Título: Re: java ArrayList en C++
Publicado por: naderST en 26 Marzo 2013, 06:07 am
Del estándar de C++ tienes la clase list. Aquí te dejo un ejemplo:

Código
  1. #include <iostream>
  2. #include <list>
  3.  
  4. std::list<int> lista;
  5.  
  6. int main() {
  7.    for(int i=1;i<=10;++i)
  8.        lista.push_back(i);
  9.    for(std::list<int>::iterator it = lista.begin();it != lista.end();++it)
  10.        std::cout << *it << std::endl;
  11.    return 0;
  12. }
  13.  

Documentación: http://www.cplusplus.com/reference/list/list/


Título: Re: java ArrayList en C++
Publicado por: <<<-Basura->>> en 3 Abril 2013, 13:09 pm
Gracias naderST, te puedo hacer una pregunta??

No existe alguna manera de hacer un iterator mas sencillo, ese si lo entiendo y lo he implementado en mi código, pero pienso que existe alguna manera de hacerlo mas corto o mas sencillo??


Título: Re: java ArrayList en C++
Publicado por: amchacon en 3 Abril 2013, 14:23 pm
Gracias naderST, te puedo hacer una pregunta??

No existe alguna manera de hacer un iterator mas sencillo, ese si lo entiendo y lo he implementado en mi código, pero pienso que existe alguna manera de hacerlo mas corto o mas sencillo??
Eliminando los espacios de nombres:

Código
  1. #include <iostream>
  2. #include <list>
  3.  
  4. using namespace std;
  5.  
  6. list<int> lista;
  7.  
  8. int main()
  9. {
  10.    for(int i=1;i<=10;++i)
  11.        lista.push_back(i);
  12.  
  13.    for(list<int>::iterator it = lista.begin();it != lista.end();++it)
  14.       cout << *it <<endl;
  15.  
  16.    return 0;
  17. }

Aunque a mí personalmente me gusta más la clase vector:

Código
  1. #include <iostream>
  2. #include <list>
  3.  
  4. using namespace std;
  5.  
  6. vector<int> lista;
  7.  
  8. int main()
  9. {
  10.    for(int i=1;i<=10;++i)
  11.        vector.push_back(i);
  12.  
  13.    for(int i = 0;i < lista.size();i++)
  14.       cout <<lista[i] <<endl;
  15.  
  16.    return 0;
  17. }


Título: Re: java ArrayList en C++
Publicado por: 0xDani en 3 Abril 2013, 16:06 pm
En C++11 puedes usar el for basado en rango para iterar sobre los elementos, tal que asi:

Código
  1.    #include <iostream>
  2.    #include <list>
  3.  
  4.    using namespace std;
  5.  
  6.    list<int> lista;
  7.  
  8.    int main()
  9.    {
  10.       for(int i=1;i<=10;++i)
  11.           lista.push_back(i);
  12.  
  13.       for(auto x : lista)
  14.          cout << x <<endl;
  15.  
  16.       return 0;
  17.    }


Título: Re: java ArrayList en C++
Publicado por: naderST en 4 Abril 2013, 21:48 pm
Eliminando los espacios de nombres:

Código
  1. #include <iostream>
  2. #include <list>
  3.  
  4. using namespace std;
  5.  
  6. list<int> lista;
  7.  
  8. int main()
  9. {
  10.    for(int i=1;i<=10;++i)
  11.        lista.push_back(i);
  12.  
  13.    for(list<int>::iterator it = lista.begin();it != lista.end();++it)
  14.       cout << *it <<endl;
  15.  
  16.    return 0;
  17. }

Aunque a mí personalmente me gusta más la clase vector:

Código
  1. #include <iostream>
  2. #include <list>
  3.  
  4. using namespace std;
  5.  
  6. vector<int> lista;
  7.  
  8. int main()
  9. {
  10.    for(int i=1;i<=10;++i)
  11.        vector.push_back(i);
  12.  
  13.    for(int i = 0;i < lista.size();i++)
  14.       cout <<lista[i] <<endl;
  15.  
  16.    return 0;
  17. }

Depende de lo que quieras hacer ya que list y vector son dos cosas diferentes. List se comporta como una lista y vector como un vector