Думайте о векторе 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
.
В этом примере я назвал этот вектор «рваным», потому что
это демонстрирует, как размер каждого вектора этого вектора может быть изменен независимо. Это не только нарушает правила того, как размеры не могут быть изменены после введения определенного вектора в математику, но также демонстрирует, как его нельзя использовать в качестве матрицы.