Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 245; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.156.26 (0.006 с.) |