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