1024--/voreterator
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Ворециратор - итератор вореционных c-v-слов
Проверка и запуск примера:
make && ./example
Простой пример. Итерируем питуха, пока не закончится буфер:
// #include "voreterator.hpp"
char buf[10] = "pitux";
voreterator<2, 1> v(buf, 9);
for (auto str : v)
std::cout << str << std::endl;
Пример посложнее. Склоняем питуха по 22 падежам с артиклями:
char buf[10] = "vo pitux";
voreterator<1, 1> case_(buf, 2, 2); // итератор артикля
voreterator<2, 1> word (buf+3, 6); // итератор слова
for (auto str : case_) {
std::cout << str << std::endl;
++word;
}
Пример превращения случайной последовательности в слово:
char buf[10] = "peetuux"; // на входе 1-2-слово
voreterator<2, 1> word (buf, 9); // требуем 2-1-слово
std::cout << *word << std::endl; // peftuvx - 2-1-слово
Интерпейс:
template <int consonant_limit=2, int vowel_limit=1>
в параметрах шаблона задаются максимально допустимые
длины последовательностей согласных/гласных
voreterator (char * str, int max_length)
создать ворециратор над буфером str максимальным размером max_length
voreterator (char * str, int max_length, int vorefix_length)
создать ворециратор над буфером str максимальным размером max_length,
начать с вореционирования vorefix_length символов
например, имеется строка zzy10, надо получить zzz10, aaaa10, ..., zzzzz10
значит vorefix_length=3, max_length=7
voreterator& operator = (const voreterator& rhs)
стандартная питушня
bool operator == (const voreterator& rhs) const
bool operator != (const voreterator& rhs) const
сравнивают указатель на строку и флаг завершения генереций
const char * operator * () const
строка (== str из коньструктора)
voreterator& operator ++ ()
генерация нового слова
operator bool () const
флаг завершения генереций (взводится, если max_length кончилась)
voreterator begin() const
копия себя для форычей
voreterator end() const
ворециратор над той же строкой, но со взведённым флагом завершения
Коньтракт:
* Поведение не определено, если аргументы конструктора питушарские
* Поведение не определено, если итерировать завершённый ворециратор
* Гарантирован багор, если итерировать ворециратор end()