Чем полезны контейнеры set? Оказывается, существует много проблем, при решении которых следует помнить, видели ли мы уже какое-то значение или нет. Один из примеров — перечисление имеющихся фруктов (независимо от цены); второй пример — составление словарей.
Также возможно вы думаете, что такая тема как купить смеситель никак не связана и даже не тематична с программированием. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт про купить смеситель
Покупка смесителя там представлена в широком ассортименте. Там можно узнать много интересного про покупку смесителя , где найти покупку смесителя .
Что означает вообще покупка смесителя , где есть покупку смесителя - про это написано на сайте про купить смеситель
Это важная для многих тема - покупка смесителя Спасибо сайту про купить смеситель за информацию про покупку смесителя
Немного другой способ использования этого контейнера — множество “записей”, элементы которого являются объектами, потенциально содержащими много информации, в которых роль ключа играет один из их членов. Рассмотрим пример.
struct Fruit {
string name;
int count;
double unit_price;
Date last_sale_date;
// . . .
};
struct Fruit_order {
Ключ first
Node* left Node* right
bool operator()(const Fruit& a, const Fruit& b) const {
return a.name
}
};
set inventory; // использует функции класса
// Fruit_Order для сравнения // объектов класса Fruit
Здесь мы снова видим, что объект-функция значительно расширяет спектр задач, которые удобно решать с помощью компонентов библиотеки STL.
Поскольку контейнер set не имеет значений, он не поддерживает операцию ^ индексирования (operator[]()). Следовательно, вместо нее мы должны использовать “операции над списками”, такие как insert() и erase(). К сожалению, контейнеры map и set не поддерживают функцию push_back() по очевидной причине: место вставки нового элемента определяет контейнер set, а не программист. Вместо этого следует использовать функцию insert().
inventory.insert(Fruit("quince",5)); inventory.insert(Fruit("apple", 200, 0.37));
Одно из преимуществ контейнера set над контейнером map заключается в том, что мы можем непосредственно использовать значение, полученное от итератора. Поскольку в контейнере set нет пар (ключ, значение), как в контейнере map, оператор разыменования возвращает значение элемента. typedef set::const_iterator SI;
for (SI p = inventory.begin(), p!=inventory.end(); ++p) cout << *p << '\n';
Разумеется, этот фрагмент работает, только если вы определили оператор << для класса Fruit.
Ранее мы назвали функцию find() “простейшим полезным алгоритмом”. Естественно, эту точку зрения можно аргументировать. Многие простые алгоритмы являются полезными, даже тривиальными. Зачем писать новую программу, если можно использовать код, который кто-то уже написал и отладил? С точки зрения простоты и полезности алгоритм copy() даст алгоритму find() фору. В библиотеке STL есть три варианта алгоритма copy().
Операции копирования
copy(b,e,b2) Копирует последовательность [b:e) в последовательность
[b2:b2+(e-b))
unique_copy(b,e,b2) Копирует последовательность [b:e) в последовательность
[b2:b2+(e-b) ), отбрасывая смежные копии
Окончание таблицы
Операции копирования
copy if(b,e,b2,p) Копирует из последовательности [b:e) в последовательность [b2:b2+(e-b)) элементы, удовлетворяющие предикату p
Опубликовал katy
April 23 2015 09:45:49 ·
0 Комментариев ·
2236 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.