• Lunes 16 de Diciembre de 2024, 03:54

Autor Tema:  Librería STL  (Leído 3268 veces)

player_

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Librería STL
« en: Jueves 16 de Septiembre de 2010, 18:56 »
0
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.

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Librería STL
« Respuesta #1 en: Jueves 16 de Septiembre de 2010, 20:21 »
0
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
The sweet smell of a great sorrow lies over the land.


player_

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Librería STL
« Respuesta #2 en: Jueves 16 de Septiembre de 2010, 22:35 »
0
Gracias por contestar. Poniendo lo de build-essential se ha solucionado.

Saludos.

player_

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Librería STL
« Respuesta #3 en: Miércoles 22 de Septiembre de 2010, 22:06 »
0
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.

alb

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Librería STL
« Respuesta #4 en: Sábado 2 de Octubre de 2010, 10:15 »
0
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.