Использование 1D против 2D векторов в реализации C ++ [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование 1D против 2D векторов в реализации C ++ [закрыто]

Сообщение Anonymous »

После некоторого обширного поиска я не смог найти четкий ответ на следующий вопрос. Когда кто -то должен сравнить 1D () против 2d () Векторная реализация. Очевидно, что время выполнения и т. Д. Если два, например, матрицы 2x2 и 2x2 умножаются, результаты матрицы 2x2. Тем не менее, можно использовать также 1D -матрицы, например, как здесь (я пытаюсь использовать неуклюжие, но математические нотации; рассмотрим все измерения соответствующим образом соответствующим образом): < /p>

Код: Выделить всё

[ 2D matrix, K rows x N columns ] * [ 1D column vector, N elements ] = [ 1D column vector, K elements ]

В основном 2D -вектор умножается на 1D -вектор и приводит к 1D -вектору. Другая возможность состоит в том, чтобы использовать вектор двухмерного измерения, например: < /p>

Код: Выделить всё

[ 2D matrix, K rows x N columns ] * [ 2D matrix, N rows x 1 column ] = [ 2D matrix, K rows x 1 column ]

Таким образом, используются только 2D векторы. Наконец, реализация может работать так: < /p>

Код: Выделить всё

[ 2D matrix, K rows x N columns ] * [ 2D matrix, N rows x 1 column ] = [ 1D column vector, K elements ]

, где, несмотря на то, что входные значения являются двумерными векторами, результат распознается как 1d и как таковая, предоставленная функцией.
конкретная реализация не так важна. Можно написать функцию, которая принимает любой тип вектора (1d или 2d). В целом, результат - это то, что имеет значение, если такая функция часто используется в программе. По сути, вопросы являются наиболее распространенной практикой? Что в принципе лучше использовать в программе? 2D векторы более мощные, но медленнее. Кроме того, что меня беспокоит, и может сделать мой код хаотичным, так это решение использовать ли 1D векторы < /p>

Код: Выделить всё

vector vec(N, def_val);

, когда это возможно, или 2D векторы, которые (в случае 1 -го измерения), на самом деле, будут иметь две возможности:

Код: Выделить всё

vector vec(N, vector(1, def_val));
vector vec(1, vector(N, def_val));
Большое спасибо за комментарии по этой теме.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ementation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»