배열
메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조
•
배열의 값은 인덱스를 통해서 참조 할 수 있으며
•
선언한 자료형의 값만 저장 할 수 있다.
•
선언할때 크기를 지정하며 후에 변경이 불가능하다.
리스트
값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조
•
인덱스가 없으므로 값에 접근하려면 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++
복사
기본 벡터 사용법


