Примеры решения задач с использованием библиотеки стандартных шаблонов STL (2 курс 4 семестр)

Пример 1

Написать функцию, добавляющую в конец списка вещественных чисел элемент, значение которого равно среднему арифметическому всех его элементов.

#include < iostream >
#include < list >
using namespace std;
 
void g ( list <double> &lst )
{
  list < double > :: const_iterator  p = lst.begin ();
  double s ( 0 );
  int    n;
  while ( p != lst.end () )
  {
    s = s + *p;
    ++n;
    ++p;
  }
  if ( n != 0 ) lst.push_back ( s/n ); // lst.push_back ( s/lst.size() );
}
 

Пример 2

Написать функцию, формирующую по заданному вектору целых чисел список из элементов вектора с четными значениями и распечатывающую его.

#include < iostream >
#include < vector >
#include < list >
 
using namespace std;
 
void g ( vector <int> &v, list <int> &lst )
{
  int i;
 
  for ( i = 0; i < v.size(); ++i )
    if ( !(v[i] % 2) ) lst.push_back ( v[i] );
 
  list < int > :: const_iterator  p = lst.begin ();
  while ( p != lst.end () )
  {
    cout << *p << endl;
    ++p;
  }
}
 
int main ()
{
  vector < int > v(20);  list < int >  lst;
  int i;
 
  for ( i = 0; i < 20; ++i ) v[i] = i;
  cout << "vector is created" << endl;
  g ( v, lst );
  return 0;
}
 

Пример 3

Написать функцию, формирующую по заданному списку целых чисел вектор из элементов списка с четными значениями и распечатывающую его.

#include < iostream >
#include < vector >
#include < list >
 
using namespace std;
 
void g ( vector <int> &v, list <int> &lst ) 
{
  list < int > :: const_iterator  p = lst.begin ();
  while ( p != lst.end () )
  {
    if ( !(*p % 2) ) v.push_back(*p);
    ++p;
  }
 
  for ( int i = 0; i < v.size(); ++i ) cout << v[i] << endl;
}
 
int main () 
{
  vector < int >  v ( 20 );
  list   < int >  lst;
 
  for ( i = 0; i < 20; ++i ) lst.push_back ( i );
  cout << "list is created" << endl;
  g (v, lst);
  return 0;
}