~(bitset[E] | bOrD) всегда выдаст или -1 или -2. Вы потом это пропустите через or, получите опять же -1 или -2 и в конце преобразуете это в bool. И вот тут-то оно всегда и станет true.~x используйте x^1, или в самом конце возвращайте результат с &1, чтобы значения остальных бит ни на что не влияли. std::function<bool(int, int)> comp = [](int left, int right)
{
return left < right;
};
Sort(vec, comp);Sort<int>(vec, [](int left, int right)
{
return left < right;
});typename U, у которого вы продполагаете существует operator(int, int). Если туда передать не function и не лябмду, оно не скомпилится:template <typename T, typename U>
void Sort(std::vector<T>& vector, U comparison) {
// Используете comparison, как-будто это std::function:
if (comparison(1, 1)) return;
};
int main()
{
std::vector<int> vec = { 1, 2, 3, 4, 5, 7, 6, 9 ,8 };
Sort(vec, [](int left, int right) -> bool
{
return left < right;
});
return 0;
} for (int i = 0; i < a.length(); ++i) {
for (int j = 0; j < b.length(); ++j) {
c[i+j] += a[i] * b[j];
}
}i+ - это и есть сдвиг. a[i] - это цифра на которую приходится домножать. а b[j] - это собственно само сдвигаемое и прикладываемое число. bool smaller_than_max = false;
bool bigger_than_min = false;
for (int i = 0; i < n; ++i) {
int left = bigger_than_min ? '0' : minimum[i];
int right = smaller_than_max ? '9' : maximum[i];
answer[i] = left + rand() % (right - left + 1);
bigger_than_min |= answer[i] > minimum[i];
smaller_than_max |= answer[i] < maximum[i];
}int **a;
// или vector<vector<int>> a;
a[10][7];M*(sizeof(int*))+M*N*sizeof(int). Чуть сложнее для vector, но идея такая же.int a[10][3];
a[4][5];N*M*sizeof(int).int[4][5] к int**. И такой массив при передаче в функцию надо передавать по типу int[][5] (можно опустить количество строк. Ибо для адресации нужна лишь длина строк, но нестолбцов, но размер строки указать предется обязательно).arr[1][2] => *(*(arr + 1) + 2) Это действительно работает, потому что arr имеет тип int[][3] или int*[3]. Коспилятор видя arr+1, знает, что над сместится на 1 размер int[3]. * разыменовывает это, но при этом указывает на то же место. И получает просто указатель на int начало строки. Фактически тут просто меняется тип указателя с int*[3] на int*. +2 сдвигается в строке на 2 размера int. int*?int* - это адрес в памяти. Число. Когда вы "перемещаете" img этого типа, вы перемещаете одно число. Из переменной img, в вектор.c_image использует c_window, который использует c_imageclass c_image;
class c_window {
// ...
}prog += 1/((double)i*(i+1));, должно сработать.