Динамический массив, вдохновлённый C# List<T>. Поддерживает добавление, сортировку, срезы, бинарный поиск и операторы для объединения и разделения. 🚀
Add(T item)— добавляет элемент в конец.Sort(SortType type = QuickSort)— сортировка (выбирай изQuickSort,HeapSort,MergeSort,InterpolationSort). По умолчаниюQuickSort.GetRange(start, count)— возвращает подсписок.Binsearch(T item)— бинарный поиск.Clear()— очищает список.Size()— возвращает размер.capacity()— возвращает текущую ёмкость.
💡 SortType: Перечисление
SortType { QuickSort, HeapSort, MergeSort, InterpolationSort }автоматически импортируется с#include "cs/types.h".
❓ MiracleSort? Сори, пока не завез, молись и жди чуда! 😜
[]— доступ к элементу по индексу.+,+=— объединение списков.%— разбиение на подсписки по количеству элементов в каждом./— разбиение на заданное количество подсписков.
#include "cs/types.h"
int main() {
List<int> nums = {3, 1, 2};
nums.Add(4);
nums.Sort(QuickSort);
std::cout << nums << std::endl; // [1, 2, 3, 4]
std::cout << nums.GetRange(1, 2) << std::endl; // [2, 3]
return 0;
}%делит список на подсписки, где каждый (или не каждый, если нацело не делится) содержит указанное количество элементов./делит список на указанное количество подсписков, распределяя элементы равномерно (если нацело не делиться, то последний будет не полным).
#include "cs/types.h"
int main() {
List<int> list = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::cout << list / 3 << std::endl; // [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]
std::cout << list % 3 << std::endl; // [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
return 0;
}- Итераторы через
begin()иend()позволяют использовать в цикле for с:. - Динамическое выделение памяти с управлением через
SetCapacity. - Поддержка любых типов (можно даже создать что-то типа
List<List<int>>), включая пользовательские (чтобы для пользовательского типа работала сортировка, для него должны быть перегружены операторы сравнения). - Красивый вывод через
<<, как списки в Python.