질문은 정말 자명합니다. 수학에서 벡터에 대해 모호하게 알고 있지만 실제로 C ++ 벡터에 대한 링크는 보이지 않습니다.
답변
벡터의 수학적 정의는 집합의 멤버이며, S
n
특정 집합 ( 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라는 이름을 지정하기 위해 Scheme 과 Scheme 이라는 이름을 관찰했습니다. 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. 여기서 1 은 F 의 곱셈 항등 을 나타냅니다 .
벡터 첨가에 대한 스칼라 곱셈의 분포
a (u + v) = au + av
필드 추가에 대한 스칼라 곱셈의 분포
(a + b) v = av + bv
C ++ std::vector
은 직접적으로가 아니라 C ++ 기능을 통해 이들을 모두 지원하므로 어떻게 든 벡터라고 부를 수 있지만 구어체 일뿐입니다. 예를 들어 “C ++ Programming Language”의Vallaray
Bjarne Stroustrup이 지적한 것은 이들 중 일부를 직접 지원합니다.