вторник, 21 марта 2023 г.

c++ set

 

http://kytok.org.ua/post/std-set-u-cplusplus


#include <iostream>

#include <set>
using namespace std;
 
int main()
{
    // declaration of set container
    set<int> myset{ 1, 2, 3, 4, 5 };
 
    // using begin() to print set
    for (auto it = myset.begin(); it !=
                             myset.end(); ++it)
        cout << ' ' << *it;
    return 0;
}

2661

#include <iostream> #include <set> using namespace std; set<int> s; int main () { int n,i,k,t; cin>>n; for (i=0;i<n;i++) { cin>>k; s.insert(k); } cin>>n; for (i=0;i<n;i++) { cin>>k; s.insert(k); } for(auto it = s.begin(); it != s.end(); it++) cout<<*it<<" "; return 0; }

2927

#include <iostream> #include <set> using namespace std; set<int> s; int main () { int n,i,k,j,x; cin>>n; for (i=0;i<n;i++) { cin>>k; for (j=0;j<k;j++) { cin>>x; s.insert(x); } } cout<<s.size(); return 0; }

5337

#include <iostream> #include <set> using namespace std; set<int> s; int main () { int r,i,t; cin>>r; for (i=0;i<r;i++) { cin>>t; s.insert(t); } cout<<s.size(); return 0; }

5089

#include <iostream> #include <set> using namespace std; int main () { set<string> s; int i,n; string str; cin >> n; for (i = 0; i < n; i++) { cin >> str; s.insert(str); } for (string str : s) cout << str << endl; return 0; }


В языке C++ контейнер set позволяет работать с различными множествами. Под множеством в данном случае понимают некоторое количество отсортированных элементов. Использование  в файле set требует подключения

В данном контейнере сортировка происходит автоматически, при добавлении элемента. Причем повторяющиеся элементы могут быть, как удалены, в случае работы с множеством, так и записаны, в случае с мультимножеством, позволяющим это. Рассмотрим конкретный пример

После добавлений  мы получим 2 множества S = (1, 2)  и mS = (1, 2, 2). Вместо insert можно использовать функцию emplace, которая перед добавлением проверяет, есть ли уже такой элемент, и если нет, то добавляет его.

Set является контейнером, так что имеет все стандартные для контейнера функции:

- Работа с элементами set:

  • S.swap(S2) - меняет содержимое контейнеров местами,
  • S.insert(a) - вставка элемента a,
  • S.erase(S2) - удаляет последовательность элементов,
  • S.clear() - очистка контейнера set,
  • S.count() - количество элементов в контейнере,
  • S.find(a) - найти элемент a в контейнере,
  • S.lower_bound(a) - первый элемент, не меньший чем a,
  • S.upper_bound(a) - первый элемент, больший чем a,
  • S.equal_range(a) - пара элементов, первый - нижняя граница элементов с, такими же значениями, что и a, второй - верхняя граница элементов с такими же значениями, что и a.

- Работа с памятью:

  • S.size() - размер контейнера,
  • S.max_size() - максимальный размер контейнера.

- Работа с контейнером:

  • S.begin() - указатель на начало контейнера,
  • S.end() - указатель на конец контейнера,
  • S.rbegin() - реверсивный указатель на конец контейнера,
  • S.rend() - реверсивный указатель на начало контейнера.