Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Базовые понятия




Алгоритм – вычислительная процедура.

Контейнер – класс, управляющий набором объектов в памяти.

Итератор – прослойка между конкретным контейнером и обобщенным алгоритмом.

Функциональный объект / функтор / - инкапсулирует функцию в объекте для использования другими. Лямбда-выражение – анонимный функтор со специальным синтаксисом.

Контейнеры

В контейнерах можно выделить основные используемые типы данных: пара, вектор, список, очередь, стек, словарь.

Простые контейнеры

2.1.1 Пара (Pair / Tuple)

Пара значений состоит из двух связанных как-то значений. Часто бывает лениво плодить отдельную структуру или класс только для того, чтобы объединить данные, списками которых обмениваются подпрограммы (смотрите подпрограмму в примере, типичный случай)… Когда количество данных невелико, используются пары. Пара агрегирует 2 значения и предоставляет к ним доступ.

Примеры создания пар ниже.

#include "stdafx.h"

#include <utility>

#include <vector>

 

using namespace std;

 

vector<pair<int, int> > GetPoints()

{

vector<pair<int, int> > points;

points.push_back(make_pair(1, 1));

points.push_back(make_pair(1, 3));

points.push_back(make_pair(2, 4));

return points;

}

 

int _tmain(int argc, _TCHAR* argv[])

{

pair <int, int> point(13, 555); // конструкторы инициализации

pair <int, int> point2; // по-умолчанию

pair <int, int> point3(point); // копирования

 

auto point4 = make_pair(3, 4); // pair <int, int> point(3, 4);

 

auto points = GetPoints();

 

return 0;

}

Зачем добавили make_pair подпрограмму?

Чтобы не писать явно типы, вида pair<int, int>.

 

Как достать агрегированные данные?

Структура позволяет получить данные через поля first и second.

 

Как в дальнейшем развивался этот концепт?

Выяснилось, что иногда хочется агрегировать не 2, а больше данных: поэтому пару подогнули в других языках программирования, чтобы количество аргументов было опциональным. Также концепт переименовали в Tuple.

 

Насколько кошерно пользоваться парой?

Ведь исчезает смысл полей. Легко перепутать и ошибиться.

В принципе, когда передается много данных в паре, то приходится помнить, что за оно. Легко ошибиться, например, пришла пара tuple<int, int, int>(13,333,333), без просмотра исходного кода, сложно понять, какое число что обозначает. Подход: если где-то в одном месте это понадобилось сделать – то это еще ничего, а если внутри системы циркулируют только пары, то это некошерно: тяжело читать код, лучше завести структуру.

Контейнеры с последовательным доступом

Популярны vector, list. Остальные типы практически не используются и будут лишь упомянуты.





Поделиться с друзьями:


Дата добавления: 2015-05-05; Мы поможем в написании ваших работ!; просмотров: 473 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Чтобы получился студенческий борщ, его нужно варить также как и домашний, только без мяса и развести водой 1:10 © Неизвестно
==> читать все изречения...

2471 - | 2352 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.