[c++] C ++ Vector가 Vector라고 불리는 이유는 무엇입니까?

질문은 정말 자명합니다. 수학에서 벡터에 대해 모호하게 알고 있지만 실제로 C ++ 벡터에 대한 링크는 보이지 않습니다.



답변

벡터의 수학적 정의는 집합의 멤버이며, Sn특정 집합 ( S)의 순서가 지정된 값 시퀀스입니다 . 이것이 C ++이 vector저장하는 것입니다.


답변

표준 템플릿 라이브러리의 디자이너 인 Alex Stepanov는 내장 배열과 구별 할 이름을 찾고 있었기 때문에 벡터라고합니다. 수학은 이미 고정 길이의 숫자 시퀀스에 ‘벡터’라는 용어를 사용하기 때문에 실수를 저지른 것을 인정합니다. C ++ 11은 수학 벡터와 유사하게 동작하는 클래스 ‘배열’을 도입하여이 실수를 복잡하게 만듭니다.

Alex의 교훈 : 이름을 지정할 때마다 매우주의하십시오.


답변

Bjarne Stroustrup 의 C ++ 프로그래밍 언어 에서 발췌 :

Varlarray

전통적인 수학적 벡터 이기 때문에 벡터
라고 말해야 하며 벡터배열 이라고 불려야한다고 주장 할 수 있습니다 . 그러나 이것이 용어가 진화 된 방식은 아닙니다.”


답변

이름은 선형 대수학에서 나옵니다. 여기서 벡터는 단 하나의 열 또는 단 하나의 행이있는 행렬입니다.


답변

왜 그것이 호출되지 않았는지 말하기 위해 array: std::vector동적 크기가 있기 때문입니다 . 배열은 개념적으로 길이가 고정되어 있습니다. 그런데 다음 C ++ 표준 std::array에는 크기가 고정되어 일반 배열보다 선호되는 템플릿이 있습니다.

std::array<int, 4> f = { 1, 2, 3, 4 };


답변

@MarkRuzon의 탁월한 응답을 보완하려면 :

Alex는 현재 std :: vector라는 이름을 지정하기 위해 SchemeScheme 이라는 이름을 관찰했습니다. Common Lisp 지정하기 위해 가 비슷한 데이터 구조에 부여한 .

나중에 그는 자신이 틀렸다고 인정한다 C ++ 벡터가 수학의 벡터와 관련이 .

그는 또한 50 명으로 구성된 커뮤니티의 오류를 5 백만 명의 커뮤니티에 도입했으며 그 오류는 영원히 지속될 것이라고 말했다.


답변

그냥 이름입니다. C ++ 벡터동적 배열 또는 크기 조정 가능한 배열 이라고 할 수 있지만 훨씬 더 정확할 수 있지만이 이름은 단순히 선택되었습니다 . 이 벡터 때문에 벡터 모든 집합의 구성원 수학 methematics 행 벡터와 동일하지 V 개의 중요한 존재하도록 조작 이 세트에 정의 + (벡터 첨가) 및 X (a 벡터의 승산이 분야에서 스칼라 F ) 및 이러한 작업은 8 개의 공리를 충족합니다 .


덧셈의 ​​결합 법칙

u + (v + w) = (u + v) + w

첨가의 전산

u + v = v + u

추가의 정체성 요소

요소 0 ∈이 존재 V 호출, 영 벡터 , 모든 V ∈에 대한이되도록 V + 0 = V V는 .

더하기의 역 원소

모든 v ∈ V마다 v + (−v) = 0이 되도록 v의 역수 라고하는 -v ∈ V 요소가 있습니다.

스칼라 곱셈과 필드 곱셈의 호환성

a (bv) = (ab) v

스칼라 곱셈의 항등 요소

1 v = v. 여기서 1F곱셈 항등 을 나타냅니다 .

벡터 첨가에 대한 스칼라 곱셈의 분포  

a (u + v) = au + av

필드 추가에 대한 스칼라 곱셈의 분포

(a + b) v = av + bv


C ++ std::vector은 직접적으로가 아니라 C ++ 기능을 통해 이들을 모두 지원하므로 어떻게 든 벡터라고 부를 수 있지만 구어체 일뿐입니다. 예를 들어 “C ++ Programming Language”의Vallaray Bjarne Stroustrup이 지적한 것은 이들 중 일부를 직접 지원합니다.