Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Бінарні файли прямого доступуСодержание книги
Поиск на нашем сайте 3.35 Шаблон структури "пара" бібліотеки STL #include <stdio.h>//шаблон структури pairtemplate <class T1, class T2>//список шаблонних параметрівstruct pair{T1 first;//поле типу T1T2 second;//поле типу T2//конструкториpair(){};pair(const T1& x,const T2& y):first(x), second(y){};};//шаблон перевантаженої операторної функції operator==template <class T1, class T2>//список шаблонних параметрівinline bool operator==(const pair<T1,T2>& x,const pair<T1,T2>& y){//повернути true, якщо поля рівніreturn x.first==y.first && x.second==y.second;};void main(){//спеціалізації структур (T1 є double, T2 є int)pair<double,int> obj1(2.1,3);//створити об’єкт obj1pair<double,int> obj2(2.1,3);//створити об’єкт obj2//використання перевантаженого оператора ==if (obj1==obj2) printf("obj1=obj2");}Використання бібліотеки STL #include <iostream.h>#include <vector>//бібліотека контейнера вектора#include <algorithm>//бібліотека функцій-алгоритмів#include <functional>//бібліотека функціональних об’єктів (функторів)//функціональний шаблонний клас addtemplate <typename T>class add{private:T x;public:add(T ix): x(ix) { }//конструкторvoid operator()(T i)//перевантажений оператор (){cout<<i+x<<" ";}};//функціональний шаблонний клас add2, //успадкований від функтора binary_functiontemplate <typename T>class add2: binary_function<T, T, T>{public:T operator()(T x, T y)//перевантажений оператор (){return x+y;}};//функція для виводу вмісту вектораvoid print(vector<int> &v){static int k=0;cout<<++k<<": ";//оголошено ітератор (вказівник на елементи вектора)vector<int>::iterator it;//в циклі ітератор указує з першого по останній елемент вектора//вивести значення елементуfor(it=v.begin(); it!=v.end(); it++) cout<<*it<<" ";cout<<endl;}void main(){vector<int> v(5);//оголосити контейнер-вектор розміром 5vector<int>::iterator it;//оголосити ітератор//приклад заповнення вектораint i;for(it=v.begin(),i=0; it!=v.end(); it++,i++) v[i]=1;print(v);//1-вивід вектора//приклад заповнення вектораfor(it=v.begin(); it!=v.end(); it++) *it=2;print(v);//2v.erase(v.begin(),v.end());//видалення усіх елементівprint(v);//3-вивід пустого вектора//приклад заповнення вектораfor(int i=0; i<5; i++) v.push_back(i);//добавляє в вектор іprint(v);//4v.erase(v.begin()+4);//видалення 5-го елементаprint(v);//5v.erase(v.begin()+1,v.begin()+3);//видалення 2 і 3-го елементівprint(v);//6cout<<v.max_size()<<endl;//максимальний розмір вектораcout<<v.size()<<endl;//розмір вектораv.insert(v.begin()+1,3,7);//вставка 7 в діапазон з індексами [1,3]print(v);//7v.pop_back();//видалення останнього елементаprint(v);//8//створити вектор v2 - копію vvector<int> v2(v.begin(), v.end());cout<<v2.empty()<<endl;//вивід логічного 0 (вектор не пустий)print(v2);//9//дописуємо в v вміст v2 з першого по передостанній елементv.assign(v2.begin(),v2.end()-1);print(v);//10//порівнюємо векториif (v==v2) cout<<"v=v2";else cout<<"v<>v2"<<endl;v2=v;//присвоюємо v2 вміст v//створення вектора з масивуint array [] = { 1, 3, 5, 7, 9};vector<int> v3 (array, array + 5);print(v3);//11//приклади застосування алгоритмів://кількість елементів менших 100cout<<count_if(v.begin(),v.end(),bind2nd(less<int>(),100))<<endl;add<int> f(2); //функтор (функціональний об’єкт)//для кожного елементу з діапазону застосувати ffor_each(v.begin(),v.end(),f);cout<<endl;//пошук першого числа < 3//застосування адаптера bind2nd і предиката lesscout<<*find_if(v.begin(),v.end(),bind2nd(less<int>(),3));cout<<endl;//копіювати діапазон v3 в vcopy(v3.begin(),v3.end(),v.begin());print(v);//12//замінити в діапазоні числа 5 на 13replace(v3.begin(),v3.end(),5,13);print(v3);//13//перемножити елементи v3[i]=v[i]*v2[i]//використовується стандартний функтор multipliestransform(v.begin(),v.end(),v2.begin(),v3.begin(),multiplies<int>());print(v3);//14//додати елементи v3[i]=v[i]+v2[i]//використовується функтор користувача add2transform(v.begin(),v.end(),v2.begin(),v3.begin(),add2<int>());print(v3);//15//сортувати v3 по зростаннюsort(v3.begin(),v3.end());print(v3);//16//сортувати v3 по спаданнюsort(v3.begin(),v3.end(),greater<int>());print(v3);//17//заповнити v3 числами 7fill(v3.begin(),v3.end(),7);print(v3);//18v2.clear();//очистити вектор v2}
|
||
|
Последнее изменение этой страницы: 2017-01-24; просмотров: 293; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.20 (0.008 с.) |