Почему вектор C ++ называется вектором? - PullRequest
128 голосов
/ 24 февраля 2009

Вопрос довольно очевиден. Я немного знаю о векторах в математике, но на самом деле не вижу связи с векторами C ++.

Ответы [ 16 ]

2 голосов
/ 24 февраля 2009

Полагаю, это происходит от термина вектор-строки . Кроме того, компьютерные ученые любят придумывать новые имена для вещей ...

1 голос
/ 15 марта 2018

Думайте о векторе C ++ как о динамическом массиве, размер которого можно изменить, вставляя или удаляя элементы. Они не связаны с математическим определением вектора.

Векторы по математике

Рассмотрим матрицу nxm, называемую A, где n соответствует количеству строк, а m соответствует количеству столбцов. В математическом контексте, после того, как вы введете такую ​​матрицу, потом вы не сможете выполнять никаких операций вне диапазона A и не можете расширять размер A. Это означает, что вы не можете ссылаться на индекс [n + 1] и / или [m + 1].

Теперь, вектор A также получает эти атрибуты, в то время как их размеры всегда будут 1xm (любая строка [i], выбранная в A) или nx1 (любой столбец [j], выбранный в A). Вектор также нельзя указать как 2xn, поскольку набор векторов нельзя интерпретировать как один вектор, а один вектор - пусть это будет вектор-столбец [i] в A с размерами 1xm - можно интерпретировать как матрицу.

Важным выводом является то, что вы не можете изменить размеры вектора, если он введен с точки зрения математики.

Векторы в C ++

В C ++ векторы аналогичны векторам в математике, но в отличие от математики их размер можно изменить . Размер как термин применяется здесь, потому что он подразумевает количество элементов, которое содержит один конкретный вектор.

Вы используете термин измерения в терминах векторов C ++, когда у вас есть вектор векторов: std::vector<std::vector<T>>> ragged_array. В этом примере я назвал этот вектор «рваным», потому что это демонстрирует, как размер каждого вектора этого вектора может быть изменен независимо. Это не только нарушает правила того, как размеры не могут быть изменены после введения определенного вектора в математику, но также демонстрирует, как его нельзя использовать в качестве матрицы.

1 голос
/ 21 февраля 2013

, но математические векторы не являются динамическими, я никогда не видел, чтобы одно изменение с 2D на 3D или что-то еще, если что-нибудь традиционное для массивов делает для улучшения векторов.

1 голос
/ 24 февраля 2009

Не зная об истинной причине, но C ++, называя его вектором вместо массива, уменьшает путаницу между структурами C и C ++, хотя они выполняют одинаковые роли.

0 голосов
/ 06 января 2011

это происходит от структуры матрицы, которая строится из векторов

0 голосов
/ 17 апреля 2009

Интересно, что параметризация по типам делает с именами ..

здесь колонка получает взорван .. (см. источник для некоторых навыков кодирования HTML на стороне сервера ASP.NET)

или это был ряд?

Опять же, если подумать об этом в контексте MIMD или даже векторной машины SSE, название все равно звучит чертовски хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...