Мне нужно реализовать один отдельный цикл, он должен быть примерно такой
int i = 0
int c = 10
T1 = <
T2 = ++
for (; i T1 c; i T2)
{
cout << i << " i " << this_thread::get_id() << "\n" << endl;
}
Мне интересно, возможно ли T1 и T2 сделать оператором <, ++, -- или *
Изменить операторы ++ на -- вносить их в переменные или что то с ними делать.
Еще вариант такой, возможно как то добавить условия
template <typename T1, typename T2, typename T3, typename T4>
auto test(T1 a, T2 b, T3 c, T4 x)
{
cout << a << endl;
cout << b << endl;
for (; a c b; a x)
{
cout << a << " |a " << this_thread::get_id() << "\n" << endl;
}
}
//test(2.242, <, 20, ++);
И в с++ и в с# можно записать так
for (; i != c; i += ((i>c)? -1:1) ) {
}
Где операцию ++
--
можно задать как i = i + 1
и i + i + (-1);
благодаря тернарному оператору. (условие)?если_да:если_нет
. В даном случае условие i>c
- если i больше с будет прибавлятся -1, иначе +1.
В с++ можно сделать макрос (#define для T1 T2) и сделать файл с циклом:
for (; i T1 c; i T2)
{
// ...
}
с макросами тяжелее будет что-то менять. Но выкрутится можно так - файл_с_циклом.с
if (i < c) {
#define T1 >
#define T2 ++
#include "файл_с_циклом.с"
#undef T1
#undef T2
} else {
#define T1 <
#define T2 --
#include "файл_с_циклом.с"
#undef T1
#undef T2
}
Макросом же можно даже спаковать это в один файл. Типа так (итог)
#ifndef T1
// Основная программа
if (i < c) {
#define T1 >
#define T2 ++
#include "файл_с_циклом.h"
#undef T1
#undef T2
} else {
#define T1 <
#define T2 --
#include "файл_с_циклом.h"
#undef T1
#undef T2
}
// Продолжение
#else
for (; i T1 c; i T2){
cout << i << " i " << this_thread::get_id() << "\n" << endl;
}
#endif
C#
Func<int, bool> T1 = iter => iter < 100;
Func<int, int> T2 = iter => iter + 1;
int i = 0;
for (; T1(i); i = T2(i))
{
}
auto t = [](int i) { return i < 1000; };
int di = -1;
for (int i=0; t(i); i+=di)
...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
хотел бы поинтересоватьсяСмотрел через ilspy код программы и мой глаз зацепила такая особенность:
Разбирался с binding в WPF и столкнулся с проблемойУ меня есть класс "Sensor", окно, в котором расположен только "DataGrid"