SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: player_ en Jueves 16 de Septiembre de 2010, 18:56

Título: Librería STL
Publicado por: player_ en Jueves 16 de Septiembre de 2010, 18:56
Hola, podéis indicarme dónde conseguir la librería STL para C++?

Estoy usando ubuntu y como compilador el geany (parece que no la trae por defecto porque he hecho una prueba y no funciona).

Gracias.
Título: Re: Librería STL
Publicado por: Epa en Jueves 16 de Septiembre de 2010, 20:21
la STL no es UNA libraria, sino un conjunto de plantillas. Que son las standard.

Si ya tenes el compilador es muy raro que no las tengas. Es probalbe que geany sea solo un ide, y no un compilador.

Cuelquier cosa pone el la terminal:

sudo aptitude install build-essential

que te instala compiladores, STL y librerias posix entre otras cosas.

Saludos
Título: Re: Librería STL
Publicado por: player_ en Jueves 16 de Septiembre de 2010, 22:35
Gracias por contestar. Poniendo lo de build-essential se ha solucionado.

Saludos.
Título: Re: Librería STL
Publicado por: player_ en Miércoles 22 de Septiembre de 2010, 22:06
Y para pasar como parámetro de una función un vector creado con stl, es correcto así, pasándolo por referencia?

Código: C++
  1.  
  2. void ImprimirVector(vector<int> &v)
  3. {
  4. //Código
  5.  
  6. }
  7.  
  8. int main()
  9. {
  10.     vector<int> v;
  11.     //Llenamos el vector
  12.     ImprimirVector(v);
  13. }
  14.  

Gracias.
Título: Re: Librería STL
Publicado por: alb en Sábado 2 de Octubre de 2010, 10:15
Cita de: "player_"
Y para pasar como parámetro de una función un vector creado con stl, es correcto así, pasándolo por referencia?
Si, es correcto pasarlo por referencia (posiblemente const).
Pero me dado cuenta que cada vèz que pasaba tal parametro (un std::vector, std::list, etc.), acababa por echarlo de menos. Prifiero ahora pasar iterators:
Código: C++
  1. #include <iostream>
  2. #include <vector>
  3. void dump_vector(std::vector<int>::const_iterator begin_,std::vector<int>::const_iterator end_)
  4. {
  5.     for(;begin_!=end_;++begin_)
  6.     {
  7.         std::cout<<*begin_<<"n";
  8.     }
  9. }
  10.  
  11. void fill_vector(std::vector<int>::iterator begin_,std::vector<int>::size_type count_, int value_)
  12. {
  13.    for(;count_>0;--count_,++begin_)
  14.    {
  15.       *begin_ = value_;
  16.    }
  17. }
  18.  
  19. int main()
  20. {
  21.     std::vector<int> v;
  22.     v.resize(10);
  23.     fill_vector(v.begin(),10,1);
  24.     dump_vector(v.begin(),v.end());
  25.     return 0;
  26. }
  27.  
  28.  

Tambien me di cuenta que muchas cosas son posibles sin esfuerto con la STL :
Código: C++
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iterator>
  5.  
  6. int main()
  7. {
  8.     std::vector<int> v;
  9.     std::fill_n(std::back_inserter(v),10,1); // igual que fill_vector pero todo en standard
  10.     std::copy(v.begin(),v.end(),std::ostream_iterator<int>(std::cout,",")); // igual que dump_vector pero todo con standard
  11.     std::cout<<"n";
  12.     return 0;
  13. }
  14.  
  15.