Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <ctime>
- #include <cstdlib>
- #include <deque>
- #include <iostream>
- #include <fstream>
- #include <map>
- #include <math.h>
- #include <queue>
- #include <set>
- #include <string>
- #include <unordered_map>
- #include <unordered_set>
- #include <vector>
- using namespace std;
- int main() {
- // #include <unordered_set>
- // создание неупорядоченного множества (хеш-сета)
- unordered_set<int> st;
- // умеем делать то же самое, что и с обычным
- st.insert(1);
- st.insert(5);
- st.insert(3);
- st.erase(3);
- // но эти операции работают за O(1), то есть константу в отличие от set, где
- // все работает за O(log(размер set))
- // и порядок в unordered set - рандомный для нас (зависит от хешей элементов)
- // поэтому при перечислении какого-то конкретного порядка не будет, в отличие от
- // обычного set, где элементы отсортированы по возрастанию
- for (auto x : st) {
- cout << x << " ";
- }
- // #include <set>
- // создание мультисета
- // тот же обычный set, но может хранить одинаковые элементы
- multiset<int> mst;
- // умеем делать то же самое, что и с обычным
- mst.insert(1);
- mst.insert(1);
- mst.insert(1);
- // в st окажется 3 единички
- mst.insert(5);
- mst.insert(3);
- mst.erase(1); // удалит все 1 из сета
- // чтобы удалить только одну можно использовать итераторы:
- auto it = mst.find(1);
- if (it != mst.end()) { // проверяем, что 1 вообще есть, если прокинем нечаянно
- // st.end() в st.erase() получим ошибку
- mst.erase(it);
- }
- // старый добрый порядок сортировки
- for (auto x : mst) {
- cout << x << " ";
- }
- // #include <unordered_map>
- // создание хеш таблицы
- unordered_map<string, int> mp;
- // умеем делать то же самое, что и с обычной map
- mp["one"] = 1;
- mp["one"] = 3;
- mp["two"] = 1 + mp["one"];
- mp.erase("one");
- // но эти операции работают за O(1), то есть константу в отличие от map, где
- // все работает за O(log(размер map))
- // достаточно запомнить, что unordered контейнеры делают операции за константу
- // и порядок в unordered map - рандомный для нас (зависит от хешей ключей)
- // поэтому при перечислении какого-то конкретного порядка не будет, в отличие от
- // обычного map, где пары ключ-значение отсортированы по возрастанию ключей
- for (auto [k, v] : mp) {
- cout << k << " " << v << "\n";
- }
- // Работа с файлами
- // #include <fstream>
- // Запись в файл
- // создаем объект для записи
- ofstream fout;
- // открываем нужный файл
- fout.open("output.txt");
- // Предыдущие две строчки кода можно объединить в одну:
- // ofstream fout("output.txt");
- // Файл мог не открыться по разным причинам, поэтому обязательно проверяем, что все хорошо
- if (!fout.is_open()) {
- cout << "Файл для вывода не открылся\n";
- return 1; // Завершили программу с ненулевым кодом = возникла ошибка
- }
- // для вывода в файл пользуемся fout так же, как пользовались cout
- // для вывода на стандартный поток (в консоль)
- for (auto [k, v] : mp) {
- fout << k << " " << v << "\n";
- }
- // вывели то, что нужно - не забываем закрыть файл в конце
- fout.close();
- // Чтение из файла
- // создаем объект для чтения
- ifstream fin;
- // открываем нужный файл
- fin.open("input.txt");
- // Предыдущие две строчки кода можно объединить в одну:
- // ifstream fin("input.txt");
- // не забываем проверить, открыли ли мы что-то
- if (!fin.is_open()) {
- cout << "Файл для ввода не открылся\n";
- return 1; // Завершили программу с ненулевым кодом = возникла ошибка
- }
- // для считывания из файла пользуемся fin так же, как пользовались cin
- // для ввода со стандартного потока (из консоль)
- int n;
- fin >> n;
- // считали то, что нужно - не забываем закрыть файл в конце
- fin.close();
- // Объекты можно конструировать с флагами, чтобы менять их работу. Основные:
- // ios_base::in - открыть файл для чтения
- // ios_base::out - открыть файл для записи
- // ios_base::app - открыть файл для записи в конец файла
- // ios_base::trunc - удалить содержимое файла, если он существует
- // ios_base::binary - открыть файл в двоичном режиме
- // По умолчанию у ifstream создается так:
- ifstream fin("input.txt", ios_base::in);
- // ofstream:
- ofstream fout("output.txt", ios_base::out | ios_base::trunc);
- // несколько флагов разделяются операцией логического или: |
- // по сути, вам в основном можем пригодиться это:
- ofstream fout("output.txt", ios_base::app); // чтобы дописывать в конец файла что-то новое
- // флаги можно передать и в open
- fin.open("input.txt", ios_base::in);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment