Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование контейнера list и потокового итератора при выводе последовательности структур на экранСодержание книги
Поиск на нашем сайте
Используем для формирования последовательности структур с информацией о студентах контейнер list. Для сортировки списка используем метод sort().
// stud.h struct stud { char name[70]; unsigned num_kurs; float ball;
};
// stdafx.h #pragma once
#define WIN32_LEAN_AND_MEAN //Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <tchar.h>
// TODO: reference additional headers your program requires here
#include <iostream> #include <ostream> #include <string.h> #include <conio.h> #include <list> #include <algorithm> #include "stud.h" using namespace std;
// main.cpp #include "stdafx.h"
bool operator< (stud first,stud second) { return (strcmp(first.name,second.name)< 0); }
ostream& operator<< (ostream& out, const stud& s) { out<<" name: "<<s.name<<endl; out<<" num kurs: "<<s.num_kurs; out<<" ball: "<<s.ball; out<<"\n++++++++++++++++++++++++++++++++++++++++++++\n\n"; return out; } void PrintList(const list<stud> &l) { cout<<"List:"; copy(l.begin(),l.end(),ostream_iterator<stud>(cout," ")); }
Int main() { list <stud> db1,db2; cout<<"input a number of students: "; int n; cin>>n; stud buf; for (int i=0;i<n;i++) //заполнение списка { cout<<" name: "; cin>>buf.name; cout<<" num of kurs: "; cin>>buf.num_kurs; cout<<" ball: "; cin>>buf.ball; cout<<"------------------------------------------\n"; db1.push_back(buf); //заполнение списка }; cout << endl << endl;
PrintList(db1); //вывод списка cout<< "size = " << db1.size() << endl; cout << endl << endl;
db1.sort(); //сортировка списка PrintList(db1); cout << endl << endl;
cout << "\ninput min ball: "; unsigned p; cin>>p;
list<stud>::iterator i;
for (i=db1.begin();i!=db1.end();i++) if (i->ball < p) { db2.push_back(*i); //формирование списка } PrintList(db2); //вывод сформированного списка cout << endl << endl; cout << endl << endl; //вывод исходного списка for (i=db1.begin();i!=db1.end();i++) //равносильно PrintList(db1); cout<<*i; _getch(); return 0; }
Использование адаптера stack при считывании чисел из файла В соответствии со своим назначением стек не только не позволяет выполнить произвольный доступ к своим элементам, но даже не дает возможности пошагового перемещения, в связи с чем, концепция итераторов в стеке не поддерживается. Для считывания значения на вершине стека используется метод top(). Специализированные последовательные контейнеры – стек, очередь, очередь с приоритетами – называются адаптерами контейнеров, т.к. реализованы на основе рассмотренных выше классов.
Интерфейс класса stack сформирован из методов класса-прототипа deque:
Пример работы со стеком. Программа вводит числа из файла и выводит их на экран в обратном порядке:
#include < stack > #include < fstream > int main() { ifstream in ("inpnum.txt"); if (!in) {cerr << "File not found\n"; exit(1);} stack <int> s; //создаем пустой контейнер-стек int x; while (in >> x) s.push(x); //читать число из файла и добавить в стек
while(!s.empty()) { //true, если пусто cout << s.top() << " "; s.pop(); //удалить из стека } cout << endl; _getch(); return 0; }
Вычисление числа объектов с заданным значением #include <algorithm> //for count()
int arr[] = { 33, 22, 33, 44, 33, 55, 66, 77 };
int main() { int n = count(arr, arr+8, 33); //подсчет в массиве количества чисел=33 cout << "There are " << n << " 33's in arr." << endl; return 0; }
Поиск первого объекта с заданным значением #include <algorithm> //for find()
int arr[] = { 11, 22, 33, 44, 55, 66, 77, 88 };
int main() { int* ptr; ptr = find(arr, arr+8, 33); //find first 33 cout << "First object with value 33 found at offset " << (ptr-arr+1) << endl; _getch(); return 0; }
|
||||||||||||||||
Последнее изменение этой страницы: 2016-12-17; просмотров: 243; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.105.149 (0.005 с.) |