void swap_parts(int* a, int* b , int k)
{
for (int f = 0; f<k; ++f)
std::swap(*a++, *b++);
}
void shift_left(int* a, int n, int k)
{
if (k == 0 || k >= n) return;
const int left = k;
const int right = n - k;
if (left < right)
{
int* right_part = a + (n - left);
swap_parts(a, right_part, left);
shift_left(a, n - left, left);
}
else
{
int* middle_part = a + right;
int* right_part = a + (n - right);
swap_parts(a, right_part, right);
shift_left(middle_part, n - right, left - right);
}
}
Вот, скажем, в одном цехе имеется оборудование, которое должно иметь на одном-единственном сетевом интерфейсе пять разных сетевых адресов (причём два из них, оба /28, вообще зашиты статически, и обслуживают взаимодействие с другими агрегатами комплекса), и обязательно из разных подсетей - это обязательное требование, явно описанное в документации на оборудование. Причём tagged оно не понимает от слова "совсем". Мне что, отдельный маршрутизатор туда ставить, чтобы разогнать подсети по разным VLAN? Да шло бы оно лесом.
IUserService<UserT>. Скорее всего тебе подойдёт IUserService<out UserT>.
С какого это перепугу виден? даже если эти порты не изолированы, то разные VLAN не дают пакету пройти с одного на другой.
Я имел в виду что ^[n] эквивалентно ~[n]
G H I J
\ / \ /
D E F
\ | / \
\ | / |
\|/ |
B C
\ /
\ /
A