Void main(). // Створюється порожня множина
{
int a[4] = {4,2,1,2};
// Створюється порожня множина
seti s1;
// Множина створюється копіюванням масиву
seti s2(a, a + 4);
seti s3(s2);// Працює конструктор копіювання
s2.insert(10);// Вставка елементів
s2.insert(6);
for ( i = s2.begin(); i != s2.end();i++)
cout << *i << " " ;
cout << endl;
// Змінна для зберігання результату equal_range;
pair <seti::iterator, seti::iterator > p;
p = s2.equal_range(2);
cout << *(p.first) <<" "<< *(p.second) << endl;
p = s2.equal_range(5);
cout << *(p.first) <<" "<< *(p.second) << endl;
}
Результат роботи програми:
1 2 4 6 10
2 4
6 6
Як і для словника, елементи в множині зберігаються відсортованими. Елементи, що повторюються, в множину не заносяться.
Приведена нижче програма формує для заданого текстового файлу вказівку, тобто впорядкований за абеткою список слів, що зустрічаються в ньому, для кожного з яких показані номери рядків, що містять це слово. Якщо слово зустрічається в рядку більше одного разу, номер рядка виводиться один раз.
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <set>
#include <map>
using namespace std;
typedef set<int, less<int> > set_i;
typedef map<string, set_i, less<string> > map_ss;
bool wordread (ifstream &in,string &word, int &num)
{
char ch;
// Пропуск до першої букви:
for (;;)
{
in.get(ch);
if (in.fail()) return false;
if (isalpha(ch) || ch == '_') break;
if (ch == '\n') num++;
}
word = "";
// Пошук кінця слова:
do
{
word += tolower(ch);
in.get(ch);
}
while (!in.fail() && (isalpha(ch) || ch == '_'));
if (in.fail()) return false;
in.putback(ch); // Якщо символ – '\n'
return true;
}
Дата добавления: 2014-12-26; просмотров: 587;