Контейнерные классы


Download 149.22 Kb.
bet9/9
Sana18.06.2023
Hajmi149.22 Kb.
#1592787
1   2   3   4   5   6   7   8   9
Bog'liq
1011025.pptx

Множества (set)
Множество — это ассоциативный контейнер, содержащий только значения клю­чей, то есть тип value_type соответствует типу Key. Значения ключей должны быть уникальны. Шаблон множества имеет два параметра: тип ключа и тип функционального объекта, определяющего отношение «меньше»:
template >
Из описания, приведенного с сокращениями, видно, что интерфейс аналогичен интерфейсу словаря. Ниже приведен простой пример, в котором соз­дается множества целых чисел:
#include
#include
using namespace std;
typedef set > set_i;
set_i::iterator i;
int main(){
int a[4] = {4, 2, 1, 2};
set_i si; // Создается пустое множество
set_i s2(a, a+4); // Множество создается копированием массива

#include
#include
using namespace std;
typedef set > set_i;
set_i::iterator i;
int main(){
int a[4] = {4, 2, 1, 2};
set_i si;
// Множество создается
//копированием массива:
set_i s2(a, a+4);
// Конструктор копирования :
s3(s2);
// Вставка элементов:
s3.insert(10);
s3.insert(6);

cout << "s2: ";
for (i=s2.begin(); i!=s2.end(); i++) cout << *i << " ";
cout << endl;
cout << "s3: ";
for (i=s3.begin(); i!=s3.end(); i++)
cout << *i << " ";
cout << endl;
if(s2.find(10)!=s2.end()) cout<<"YES";
else cout<<"NO";
cout<< endl;
return 0;
}

Результат работы программы:
s2: 1 2 4
S3: 1 2 4 6 10
NO
Как и для словаря, элементы в множестве хранятся отсортированными. Повто­ряющиеся элементы в множество не заносятся.
Класс bitset
Класс bitset предназначен для работы с отдельными битами. Т. е. экземпляр этого класса представляет из себя набор переменных булевского типа. Число же битов (булевских переменных) указывается при создании экземпляра класса bitset.
С переменными типа bitset можно производить стандартные побитовые операции. Кроме того, можно получать значения отдельных битов в bitset, число установленных битов, изменять все биты на противоположные и др.
Привет

#include
#include
using namespace std;
int main(){
bitset<3> b0;
b0[0] = 1;
b0[1] = 0;
b0[2] = 1;
bitset<3> b1(string("001"));
cout<< b1 <<"\n";
// Побитовые операции.
cout<<"*****\n";
bitset<3> res = b0 & b1; // Побитовое "и".
cout << res << "\n";
res = b0 | b1; // Побитовое "или".
cout << res << "\n";
res = b0 ^ b1; // Исключающее "или".
cout << res << "\n";
cout<<"*****\n";

// Число установленный битов
cout << b0.count() << "\n";
// Общее число элементов.
cout << b0.size() << "\n";
// Обращение битов на противоположные.
b0.flip();
cout << b0 << "\n";
// Сдвиг битов влево.
b1 = b1<<1;
cout << b1 << "\n";
// Обнуление всех битов.
b1 = b1.reset();
cout << b1 << "\n";
system("pause");
return 0;
}

Download 149.22 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling