Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

I. Немодифицирующие операции




for_earch() выполняет операции для каждого элемента последовательности

find() находит первое вхождение значения в последовательность

find_if() находит первое соответствие предикату в последовательности

count() подсчитывает количество вхождений значения в последовательность

count_if() подсчитывает количество выполнений предиката в последовательности

search() находит первое вхождение последовательности как подпоследовательности

search_n() находит n-е вхождение значения в последовательность

 

II. Модифицирующие операции

copy() копирует последовательность, начиная с первого элемента

swap() меняет местами два элемента

replace() заменяет элементы с указанным значением

replace_if() заменяет элементы при выполнении предиката

replace_copy() копирует последовательность, заменяя элементы с указанным значением

replace_copy_if() копирует последовательность, заменяя элементы при выполнении предиката

fill() заменяет все элементы данным значением

remove() удаляет элементы с данным значением

remove_if() удаляет элементы при выполнении предиката

remove_copy() копирует последовательность, удаляя элементы с указанным значением

remove_copy_if() копирует последовательность, удаляя элементы при выполнении предиката

reverse() меняет порядок следования элементов на обратный

random_shuffle() перемещает элементы согласно случайному равномерному распределению («тасует» последовательность)

transform() выполняет заданную операцию над каждым элементом последовательности

unique() удаляет равные соседние элементы

unique_copy() копирует последовательность, удаляя равные соседние элементы

III. Сортировка

sort() сортирует последовательность с хорошей средней эффективностью

partial_sort() сортирует часть последовательности

stable_sort() сортирует последовательность, сохраняя порядок следования равных элементов

lower_bound() находит первое вхождение значения в отсортированной последовательности

upper_bound() находит первый элемент, больший, чем заданное значение

binary_search() определяет, есть ли данный элемент в отсортированной последовательности

merge() сливает две отсортированные последовательности

 

IV. Работа с множествами

includes() проверка на вхождение

set_union() объединение множеств

set_intersection() пересечение множеств

set_difference() разность множеств

 

V. Минимумы и максимумы

min() меньшее из двух

max() большее из двух

min_element() наименьшее значение в последовательности

max_element() наибольшее значение в последовательности

 

VI. Перестановки

next_permutation() следующая перестановка в лексикографическом порядке

pred_permutation() предыдущая перестановка в лексикографическом порядке

 

Пример 8.8.1. Сортировка массива данных встроенных типов

Алгоритм sort() имеет следующие основные формы.

template<class RandIter>

void sort(RandIter начало,RandIter конец)

template<class RandIter,class Comp>

void sort(RandIter начало,RandIter конец,

Comp функция_сравнения)

В примере создается и сортируется массив символов.

#include<iostream>

#include<vector>

#include<cstdlib>

#include<algorithm>

using namespace std;

void main()

{vector<char> v;

int i,k;

cin>>k;

//создание векторов из случайных символов

for(i=0;i<k;i++)

v.push_back(‘A’+(rand()%26));

//исходный массив

for(i=0;i<v.size();i++)cout<<v[i];

cout<<endl;

//сортировка вектора

sort(v.begin(),v.end());

//отсортированный массив

for(i=0;i<v.size();i++)cout<<v[i];

cout<<endl;

}

Пример 8.8.2. Сортировка массива данных пользовательских типов

#include<iostream>

#include<vector>

#include<string>

#include<algorithm>

#include <functional>

#include“student.h” //Определение класса STUDENT

using namespace std;

Определим функцию для сравнения студентов по рейтингу

class pred: public binary_function< STUDENT, STUDENT,bool>

{

public:

bool operator()(const STUDENT& st1, STUDENT& s2)const

{return s1.GetGrade()<s2.GetGrade();}

};

В функции main() запишем

vector< STUDENT> v;

Затем надо заполнить контейнер v, например так:

v1.push_back(STUDENT ("Иванов",19,54.5));

Если сейчас отсортировать контейнер следующим образом:

sort(v.begin(),v.end());

то студенты будут отсортированы в зависимости от того, как определена в классе STUDENT опрерация <.

Если мы хотим отсортировать контейнер нужным для нас образом, следует использовать объект-функцию. Например, определим функцию для сравнения студентов по рейтингу:

class pred: public binary_function< STUDENT, STUDENT,bool>

{

public:

bool operator()(const STUDENT& st1, STUDENT& s2)const

{return s1.GetGrade()<s2.GetGrade();}

};

Сортируем контейнер

sort(v.begin(),v.end(),pred());

При передаче алгоритму sort третьего параметра создается объект класса pred (вызовом контейнера без конструктора) и вызывается перегруженная операция ().

 

Пример 8.8.3. Поиск в контейнере

Создадим фунциональный класса для поиска по имени:

class pred1:public unary_function< STUDENT,bool>

{

string s;

public:

explicit pred1(const string& ss):s(ss){}

bool operator()(const STUDENT & ob)const

{return ob.Get_Name()==s;}

};

 

После этого для поиска можно использовать алгоритм find_if:

vector<STUDENTt>::iterator it;

it= find_if(v1.begin(),v1.end(),pred1("Котов"));

После выполнения find_if следует проверить, найден ли объект. Вспомним, что в случае неудачи алгоритм возвращает значение функции end().

if(it!=v1.end())cout<<endl<<*p<<endl;

else cout<<"Такого объекта нет"<<endl;

 

 


 

Приложение. Создание С++ приложений в среде Microsoft Visual Studio

Концепция решений и проектов

Сеанс работы в Microsoft Visual Studio.Net начинается с открытия существующего или создания нового решения(solution). Решение – это синоним рабочего пространства(workspace) в Microsoft Visual C++ 6.0. Файлы решений имеют расширение sln и используются IDE для хранения настроек и начальных установок конкретных решений. Концепция решений помогает объединить проекты и другие элементы в одном рабочем пространстве. Рабочее пространство может содержать несколько проектов, быть пустым или содержать файлы, которые имеют смысл и вне контекста решений. Проект как часть решения состоит из отдельных компонентов, например файлов ресурсов(rc-файл), файлов с исходными кодами(.cpp,.h). Настройки проектов хранятся в специальных файлах проектов. Они могут иметь разные расширения, так как в одном пространстве можно объединять проекты разных типов. Например, проект Win32 Aplication хранит свои установки в файле с расширением vcproj.

Создание нового проекта

После запуска Visual Studio появится следующее окно(рис. 1)


рис. 1

 

В этом окне выберем в меню File команду New->Project, либо нажмем Ctrl+Shift+N.

В появившемся окне New Project в списке Project type выберем Visual C++/Win32, а в списке Templates – Win32 Console Application (рис. 2). В строке name введем имя проекта, а в строке Location выберем расположение проекта.

Если Вы хотите создать папку для решения (solution), то следует отметить “Create directory for solution” и ввести имя решения в строке “Solution Name”.

 


рис. 2

 

 

Нажав кнопку OK, перейдем в Мастер Приложения(рис.3).

рис. 3

 

Нажмем кнопку “Next” и перейдем в окно установки параметров проекта (рис. 4).

рис. 4

В этом окне выберем Console application и Empty project. Нажмем кнопку “Finish”. Мастер создаст проект – консольное приложение.

В окне проекта (рис. 5) мы видим три раздела: Object Browser, Solution Explorer и Resourse View. В окне Solution Explorer можно осуществлять навигацию по файлам проекта. В этом окне мы видим имя проекта(lab1) и три группы файлов(Header Files, Resource Files и Source Files). Пока проект не содержит файлов. Создадим необходимые файлы. Для этого в окне Solution Explorer щелкнем правой кнопкой мыши по проекту и в появившемся контекстном меню выберем Add/New Item….

рис. 5

В появившемся окне Add New Item (рис. 6) в списке Categories выберем Code, а в списке Templates – тип добавляемого в проект файла.

рис. 6

Создадим три файла: country.h – определение класса, country.cpp – реализация класса и main.cpp – демонстрационная программа, содержащая функцию main(). Пока файлы пустые. Щелкнул по имени файла, мы перейдем в редактор кода, где и запишем соответствующий код(рис.7).

рис. 7

Для того, чтобы откомпилировать и собрать проект(создать выполняемый exe-файл, щелкните правой кнопкой мыши по проекту и в появившемся контекстном меню выберите Build, Rebuild или Debug/Start new instance. То же самое можно сделать через меню Build и Debug или нажав Ctrl+F5. Результаты выполнения проекта увидим на вкладке Output (рис. 8). Если программа содержит ошибки, получим сообщение типа показанного на рисунке.

рис. 8

Щелкнув по сообщению об ошибке(рис. 9), мы перейдем к месту ошибки в коде программы(рис. 10).

 

рис. 9

 

 

 

рис. 10

 

На рисунке 11 показаны сообщения при успешной компиляции и компоновки программы.

рис. 11

 

Установить конфигурацию проекта (Debug или Release) можно через меню Build/Configuration Menager(рис. 12).

рис. 12

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...