Search

배열과 리스트 그리고 벡터

배열

메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조
배열의 값은 인덱스를 통해서 참조 할 수 있으며
선언한 자료형의 값만 저장 할 수 있다.
선언할때 크기를 지정하며 후에 변경이 불가능하다.

리스트

값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조
인덱스가 없으므로 값에 접근하려면 Head 포인터부터 순서대로 접근해야 하므로
속도가 느리다.
포인터로 연결되어 있기 때문에 데이터를 삽입하거나 삭제하는 연산 속도가 빠르다.
크기를 지정하지 않아도 되며 크기 변환에 용이하다.
포인터를 저장할 공간이 필요하므로 배열보다 구조가 복잡하다.

벡터

C++ 표준 라이브러리에 있는 자료구조 컨테이너 중 하나로, 사용자가 손쉽게 사용하기 위해 정의된 클래스
기존의 배열과 같은 특징을 가지면서 배열의 단점을 보완한 동적 배열의 형태이다.
동적으로 원소를 추가할 수 있다. 즉 크기가 자동으로 늘어난다.
맨 마지막 위치에 데이터를 삽입하거나 삭제하는 것은 문제가 없지만 중간 데이터 삽입, 삭제는 배열과 같은 메커니즘으로 동작한다.
배열과 마찬가지로 인덱스를 이용하여 각 데이터에 직접 접근할 수 있다.
vector<자료형> 변수명 // 벡터 생성 vector<자료형> 변수명(숫자) // 숫자만큼 벡터 생성 후 0으로 초기화 vector<자료형> 변수명 = { 변수1, 변수2... } // 벡터 생성 후 오른쪽 변수 값으로 초기화 vector<자료형> 변수명[] = {, } // 벡터 배열 선언 및 초기화 vector<vector<자료형>> 변수명 // 2차원 벡터 생성 vector<자료형> 변수명.assign(범위, 초기화할 값) // 범위 내에서 해당 값으로 초기화
C++
복사
벡터 초기화 방법
#include "iostream" #include "vector" using namespace std; int main() { vector<int> A; // vector<자료형> 변수 이름 A.push_back(1); // 마지막에 1 추가 A.insert(A.begin(), 7); // 맨 앞에 7 삽입 A.insert(A.begin() + 2, 10); // index 2에 위치에 10 삽입 A[4] = -5; // index 4의 값을 -5로 변환 // 삭제 연산 A.pop_back(); // 마지막 값 삭제 A.erase(A.begin() + 3); // index 3에 해당하는 값 삭제 A.clear(); // 모든 값 삭제 // 정보 가져오기 A.size(); // 데이터 개수 A.front(); // 처음 값 A.back(); // 마지막 값 A[3]; // index 3에 해당하는 값 A.at(5); // index 5에 해당하는 값 A.begin(); // 첫번째 데이터 위치 A.end(); // 마지막 데이터 다음 위치 }
C++
복사
기본 벡터 사용법