본문 바로가기

반응형

벡터

[C++] vector container 정리 및 기본 사용법과 응용 [목차] 1. vector란? 2. vector의 장단점 3. vector 사용 준비 4. vector 생성자 5. vector 멤버 함수 6. 2차원 vector 7. vector의 응용 그동안 PS를 하면서 vector가 반드시 필요한 문제를 접하지 못해서 그런지, 항상 그동안 익숙했던 배열을 이용해 왔다. 하지만 vector를 이용하면 훨씬 편리하다는 주변의 조언에 따라 이제라도 최대한 vector를 이용하려고 한다. (사실 처음에 vector가 indexing이 안 되는 줄 알고 사용을 안 했는데, 배열과 똑같이 indexing이 되니 배열을 쓸 이유가 없는 것 같긴 하다....) 1. vector란? C++ STL에는 크게 두 개의 container가 있다. 배열처럼 원소들을 순서대로 보관하는 ..
외적 (CCW 알고리즘) 외적 이 게시글에서는 '기하 알고리즘'에서 이용되는 벡터의 외적 개념에 대해서 간단하게 살펴볼 예정이다. (기본적으로 벡터에 대한 개념이 숙지되어 있어야 이해하기가 쉬울 것 같다....) 외적은 두 벡터에 동시에 수직인 벡터 (이하 수직벡터)를 구하는 연산으로, 기호로는 를 이용한다. 이 때, 두 벡터가 평행하지 않은 경우, 수직벡터는 아래와 같이 두 경우로 나오게 된다. 이는 두 벡터를 연산하는 순서에 따라서 달라지게 되고, 수직벡터는 서로 반대의 방향으로 나타난다. 그러므로 연산 순서에 따라 외적값이 음수 또는 양수로 나타난다. (크기는 같다) 혹시 오른손법칙을 알고 있는 사람이라면, 수직벡터가 어떤 방향으로 나타나는지 쉽게 알 수 있을 것이다. 위의 그림은 a X b 를 구한 경우이다. 즉, a에서..
CCW (Counter-ClockWise) - (1) CCW (Counter-ClockWise) - (1) CCW 알고리즘은 수 계산에서의 사칙연산처럼, '기하 알고리즘'에서 가장 기본적인 알고리즘이다. 즉, 기하 알고리즘에서 매우 자주 이용된다는 뜻이다. 우선 이 게시글에서는 CCW에 대한 소개를 하려고 한다. CCW 알고리즘이란? "평면에 놓여진 세 점의 방향관계를 구하는 알고리즘" 기본적으로 벡터의 외적 개념이 사용되지만 크게 어려운 내용은 아니다. 아래의 그림을 통해서 이해해보자. 이렇게 세 점이 주어져 있는 경우에, 이 세 점이 시계방향인 관계인지, 시계 반대 방향인지, 혹은 평행한 관계인지를 따지는 것이 목표이다. CCW 알고리즘은 시계반대방향일 때 양수, 시계방향일 때 음수, 평행일 때 0을 반환한다. 위의 그림과 같이 A,B,C 순서로 세 점..