Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
int i, d[] = { 5, 2, 3, 8, 3, 1, 3 };<br />
const int D = sizeof (d) / sizeof (int);<br />
for (i=0; iItems–>Add (d[i]);<br />
std::sort (d, d+D);<br />
for (i=0; iItems–>Add (IntToStr (i) +<br />
(binary_search (d, d+D, i) " есть" : " нет"));<br />
AnsiString s1[] = {"раз", "два", "четыре", "пять" },<br />
s2[] = { "раз", "три", "пять", "семь"};<br />
const int S1 = sizeof (s1) / sizeof (s1[0]), S2 = sizeof (s2) / sizeof (s2[0]);<br />
for (i=0; iItems–>Add (s1[i]);<br />
std::sort (s1, s1+S1);<br />
for (i=0; iItems–>Add (s2[i] +<br />
(binary_search (s1, s1+S1, s2[i]) " есть" : " нет"));<br />
}<br />
63<br />
Контейнер set поддерживает уникальные ключи и дву<strong>на</strong>правленные<br />
итераторы, являясь хранилищем упорядоченных объектов, удобным для поиска<br />
и сравнения с а<strong>на</strong>логичными хранилищами. Он незаменим для выполнения<br />
классических операций <strong>на</strong> множествах: при<strong>на</strong>длежности, объединения,<br />
пересечения, вычитания, дополнения. В отличие от vector и map, контейнер<br />
set не позволяет непосредственно воздействовать <strong>на</strong> з<strong>на</strong>чения объектов, требуя<br />
вместо этого вставки измененных объектов извне. В следующем примере<br />
множество s1 заполняется числами, и эти же числа копируются в s2. Затем<br />
отыскивается и удаляется первая полови<strong>на</strong> s2, остаток заполняется новыми<br />
числами, и вычисляются результаты объединения и пересечения s1 и s2. В<br />
программе работают алгоритмы advance – перемещение итератора, set_union<br />
– объединение, set_intersection – пересечение множеств.<br />
#include <br />
#include <br />
using namespace std;<br />
void __fastcall TForm1::SetClick (TObject *Sender) {<br />
set s1, s2, s3, s4;<br />
set::iterator j;<br />
for (int i=0; i>1);<br />
s2.erase (s2.begin (), j);