Примеры решения задач с использованием библиотеки стандартных шаблонов 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;
}