#include <algorithm>
#include <iostream>
#include <numeric>
#include <stdexcept>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <variant>
#include <vector>
Go to the source code of this file.
|
template<typename T > |
bool | Contains (const std::vector< T > &vec, const T &value) |
| Проверяет наличие элемента в векторе.
|
|
std::string | ErasedZerosStr (float number) |
| Функция, которая обрезает незнач. нули float при преобр. в строку.
|
|
template<typename Type1 , typename Type2 > |
std::ostream & | operator<< (std::ostream &os, const std::pair< Type1, Type2 > &pair) |
| Выводит все элементы пары в поток.
|
|
template<typename... Ts> |
std::ostream & | operator<< (std::ostream &os, const std::tuple< Ts... > &t) |
| Выводит все элементы std::tuple в поток.
|
|
template<typename K , typename V > |
std::ostream & | operator<< (std::ostream &os, const std::unordered_map< K, V > &map) |
| Выводит все элементы std::unordered_map в выходной поток.
|
|
template<typename Type > |
std::ostream & | operator<< (std::ostream &os, const std::vector< Type > &vec) |
| Выводит все элементы вектора в поток.
|
|
template<typename Type > |
std::istream & | operator>> (std::istream &is, std::vector< Type > &vec) |
| Перегрузка, которая вводит все элементы вектора из потока. (работает исключительно с консолью, так как (вывод о текущем состоянии происходит туда)
|
|
template<std::size_t I = 0, typename... Ts> |
static std::ostream & | PrintTuple (std::ostream &os, const std::tuple< Ts... > &t) |
| Выводит все элементы std::tuple в поток.
|
|
std::string | ReplacedString (std::string origin, const std::string &substring) |
| Удаляет подстроку из начала строки, если она там присутствует.
|
|
◆ Contains()
template<typename T >
bool Contains |
( |
const std::vector< T > & | vec, |
|
|
const T & | value ) |
|
inline |
Проверяет наличие элемента в векторе.
- Template Parameters
-
- Parameters
-
vec | исходный вектор. |
value | искомое значение. |
- Returns
true
: элемент найден.
-
false
: элемент не найден.
193 {
194 return std::find(vec.begin(), vec.end(), value) != vec.end();
195}
◆ ErasedZerosStr()
std::string ErasedZerosStr |
( |
float | number | ) |
|
|
inline |
Функция, которая обрезает незнач. нули float
при преобр. в строку.
- Parameters
-
- Returns
std::string
: итоговое число, записанное в строку.
125 {
126 std::string origin = std::to_string(number);
127
128
129 origin.erase(origin.find_last_not_of('0') + 1, std::string::npos);
130
131
132 if (origin.back() == '.') origin.pop_back();
133
134 return origin;
135}
◆ operator<<() [1/4]
template<typename Type1 , typename Type2 >
std::ostream & operator<< |
( |
std::ostream & | os, |
|
|
const std::pair< Type1, Type2 > & | pair ) |
|
inline |
Выводит все элементы пары в поток.
- Template Parameters
-
Type1 | тип, возможный к выводу в консоль. |
Type2 | тип, возможный к выводу в консоль. |
- Parameters
-
os | ссылка на поток, в который надо вывести (мод.). |
pair | пара элементов произвольного типа. |
- Returns
std::ostream
: ссылка на поток, в который вывели.
29 {
30 return os << "{" << pair.first << "; " << pair.second << "}";
31}
◆ operator<<() [2/4]
template<typename... Ts>
std::ostream & operator<< |
( |
std::ostream & | os, |
|
|
const std::tuple< Ts... > & | t ) |
Выводит все элементы std::tuple
в поток.
- Template Parameters
-
Ts | типы элементов в кортеже. |
- Parameters
-
os | выходной поток, в который будет записан кортеж. |
t | кортеж, который нужно распечатать. |
- Returns
std::ostream
: модифицированный выходной поток.
64 {
65 os << "{";
67 return os << "}";
68}
static std::ostream & PrintTuple(std::ostream &os, const std::tuple< Ts... > &t)
Выводит все элементы std::tuple в поток.
Definition utils.hpp:44
◆ operator<<() [3/4]
template<typename K , typename V >
std::ostream & operator<< |
( |
std::ostream & | os, |
|
|
const std::unordered_map< K, V > & | map ) |
Выводит все элементы std::unordered_map
в выходной поток.
- Template Parameters
-
K | тип ключей в неупорядоченной карте. |
V | тип значений в неупорядоченной карте. |
- Parameters
-
os | выходной поток, в который будет записан словарь. |
map | словарь, который нужно распечатать. |
- Returns
std::ostream
: модифицированный выходной поток.
104 {
105 os << "{";
106
107 bool first = true;
108 for (const auto& [key, value] : map) {
109 if (!first) os << "; ";
110
111 os << key << ": " << value;
112 first = false;
113 }
114
115 return os << "}";
116}
◆ operator<<() [4/4]
template<typename Type >
std::ostream & operator<< |
( |
std::ostream & | os, |
|
|
const std::vector< Type > & | vec ) |
|
inline |
Выводит все элементы вектора в поток.
- Template Parameters
-
Type | тип, возможный к выводу в консоль. |
- Parameters
-
os | ссылка на поток, в который надо вывести (мод.). |
vec | вектор элементов произвольного типа. |
- Returns
std::ostream
: ссылка на поток, в который вывели.
81 {
82 os << "{";
83
84 for (std::size_t i = 0; i < vec.size(); i++) {
85 os << vec[i];
86 if (i != vec.size() - 1) os << "; ";
87 }
88
89 return os << "}";
90}
◆ operator>>()
template<typename Type >
std::istream & operator>> |
( |
std::istream & | is, |
|
|
std::vector< Type > & | vec ) |
|
inline |
Перегрузка, которая вводит все элементы вектора из потока. (работает исключительно с консолью, так как (вывод о текущем состоянии происходит туда)
- Template Parameters
-
Type | тип, возможный к выводу в консоль. |
- Parameters
-
is | ссылка на поток, из которого надо ввести (мод.). |
vec | вектор элементов типа Type (мод.). |
- Returns
std::istream
: ссылка на поток, из которого ввели.
149 {
150
151 long size = 0;
152
153 std::cout << "Enter array size: ";
154 while (size <= 0) {
155 is >> size;
156 if (!is) {
157 std::cerr << "Invalid size input." << std::endl;
158 return is;
159 }
160
161 if (size <= 0) std::cout << "Invalid size input. Try again: ";
162 }
163
164
165 Type curr;
166
167 vec.clear();
168 std::cout << "Enter array elements: ";
169 for (std::size_t i = 0; i < std::size_t(size); i++) {
170 is >> curr;
171 if (!is) {
172 std::cerr << "Invalid array input. The entry is incorrect." << std::endl;
173 return is;
174 }
175
176 vec.push_back(curr);
177 }
178
179 return is;
180}
◆ PrintTuple()
template<std::size_t I = 0, typename... Ts>
static std::ostream & PrintTuple |
( |
std::ostream & | os, |
|
|
const std::tuple< Ts... > & | t ) |
|
static |
Выводит все элементы std::tuple
в поток.
- Template Parameters
-
I | текущий индекс, обрабатываемый в кортеже. |
Ts | типы элементов в кортеже. |
- Parameters
-
os | выходной поток, в который будут записаны элементы кортежа. |
t | кортеж, который нужно распечатать. |
- Returns
std::ostream
: модифицированный выходной поток.
44 {
45 if constexpr (I < sizeof...(Ts)) {
46 if (I != 0) os << "; ";
47
48 os << std::get<I>(t);
50 } else
51 return os;
52}
◆ ReplacedString()
std::string ReplacedString |
( |
std::string | origin, |
|
|
const std::string & | substring ) |
|
inline |
Удаляет подстроку из начала строки, если она там присутствует.
- Parameters
-
origin | исходная строка, из которой нужно удалить подстроку. |
substring | подстрока, которую нужно удалить из начала строки. |
- Returns
std::string
: строка, в которой подстрока (если она была) удалена из начала.
207 {
208 return origin.rfind(substring, 0) == 0 ? origin.erase(0, substring.length())
209 : origin;
210}