13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

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);

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!