Есть ли функция для назначения некоторого значения некоторым некоторым элементам матрицы без использования для цикла? [Дубликат]

Это помогает, если вы знаете основные механизмы. C ++ формализует некоторые методы кодирования, используемые программистами C, заменяемые «классы» с использованием «overlays» - структуры с общими разделами заголовков будут использоваться для обработки объектов разных типов, но с некоторыми общими данными или операциями. Обычно базовая структура наложения (общая часть) имеет указатель на таблицу функций, которая указывает на другой набор подпрограмм для каждого типа объекта. C ++ делает то же самое, но скрывает механизмы, то есть C ++ ptr->func(...), где func является виртуальным, поскольку C будет (*ptr->func_table[func_num])(ptr,...), где изменения между производными классами являются содержимым func_table. [Не виртуальный метод ptr-> func () просто переводится в mangled_func (ptr, ..).]

. Таким образом, вам нужно только понять базовый класс, чтобы вызвать методы производного класса, т. е. если подпрограмма понимает класс A, вы можете передать ей указатель производного класса B, тогда виртуальные методы, называемые, будут такими, как B, а не A, поскольку вы проходите через таблицу функций B.

4
задан nos 30 October 2012 в 05:31
поделиться

2 ответа

Я думаю, что у Дэна Беккера есть правильная идея, но переизбрание abs(C-B) и abs(C-A) означает, что сравниваются обновленные матрицы, а не оригинальные .

Я не думаю, что это то, что вы хотите, так что это исправленная версия его метода:

CmA = abs(C-A);
CmB = abs(C-B);

ind = Cma < CmB; C(ind) = A(ind);
ind = CmA > CmB; C(ind) = B(ind);
C(CmA == CmB) = 0;
5
ответ дан Rody Oldenhuis 25 August 2018 в 20:12
поделиться

Я думаю, что вы хотите следующее:

ind = abs(C - A) < abs(C - B) ; C(ind) = A(ind);
ind = abs(C - A) > abs(C - B) ; C(ind) = B(ind);
ind = abs(C - A) == abs(C - B) ; C(ind) = 0;
1
ответ дан Dan Becker 25 August 2018 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: