코딩굼벵이
구르는 중
코딩굼벵이
  • 분류 전체보기 (115)
    • [C_C++]이론 공부 (17)
      • 알고리즘 (11)
      • 이론+STL (6)
    • [C_C++]코딩테스트 연습 (45)
      • [프로그래머스] level 1 (26)
      • [프로그래머스] level 2 (5)
      • [백준] 일반 문제 (12)
      • 기타 (2)
    • Solana (28)
      • Documentation (9)
      • Validator - 공부 (10)
      • Validator - 실행 (devnet & te.. (6)
      • 그 외 (3)
    • React (4)
    • Linux (2)
    • Javascript (2)
    • 블록체인 기반 핀테크 및 응용 SW 개발 (8)
      • React (1)
      • Javascript (3)
      • Solidity (3)
      • 프로젝트 (1)
    • 기타 (9)

블로그 메뉴

  • 🌟 깃허브
  • 🌿 Portfolio(2021)
  • 홈
  • 태그
  • 방명록

티스토리

최근 글

태그

  • grafana
  • 모니터링
  • 밸리데이터
  • Hooks #React
  • 솔라나
  • Immer #ContextAPI

인기 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
코딩굼벵이

구르는 중

[C++ STL] vector(벡터) 공부
[C_C++]이론 공부/이론+STL

[C++ STL] vector(벡터) 공부

2021. 6. 14. 19:21
728x90

STL : 표준 템플릿 라이브러리; Standard Template Library

 

사용하려면 #include <vector>가 필요하다.

 

C++에서는 동적 배열 구조를 vector로 구현할 수 있다.

vector<string> vec, vector<int> vec처럼 선언해주면 자동으로 배열의 크기 조절과 객체의 추가, 삭제가 가능하다. 단, 한번에 한 타입만 저장이 가능하다.

요소에 접근하거나, 앞 or 뒤에 요소를 추가/삭제하거나, 크기를 알 수 있는 멤버 함수 등을 제공한다.

 

다음은 vector를 이용해 문자열을 추가, 삭제해 각각 출력하는 코드다.

 

#include <iostream>
#include <string>
#include <vector> // vector 헤더파일 추가

using namespace std;

int main() {
	vector<string> vec; // 비어있는 벡터 생성

	vec.push_back("벡터는 ");
	vec.push_back("이렇게 ");
	vec.push_back("씁니다."); 

	for (int i = 0; i < vec.size(); i++) {
		cout << vec[i] << endl; // vec.at(i)도 가능
	}

	vec.pop_back(); // 맨 뒤에 원소 제거

	cout << "\n";
	for (int i = 0; i < vec.size(); i++) {
		cout << vec.at(i) << endl;
	}
	return 0;
}

출력 결과

 

vector의 메소드와 사용방법은 다음과 같다.

메소드 설명
at 특정 위치 원소의 참조를 반환
vec.at(1) == vec[1] 이다.
push_back / pop_back 마지막에 원소를 추가 / 삭제
insert 특정 위치에 원소 삽입
<사용 예시>
v.insert(v.begin()+1, "hi"); //처음 원소 다음에 hi 삽입
front / back 첫번째 / 마지막 원소의 참조를 반환
begin / end 첫번째 원소의 랜덤 접근 반복자를 반환 /
마지막 원소 다음의 반복자를 반환

for문에서 초기조건, 종료조건처럼 쓰인다.
<사용 예시>
vector<string>::iterator vi;
for(vi = vec.begin(); vi != vec.end(); vi++)
cout << *vi << endl; // vec 배열 원소 차례로 반환
rbegin / rend 역방향으로 첫 원소의 반복자를 반환 /
역방향으로 마지막 원소 다음의 반복자를 반환

<사용 예시>
vector<string>::reverese_iterator vi;
for(vi = vec.rbegin(); vi != vec.rend(); vi++) ...
assign 특정 원소로 채움(이전 데이터는 저장하지 않음)
초기화 용도
reserve 지정된 크기의 저장 공간을 확보
v.reserve(100); //100칸 확보
size 원소 개수 반환
<사용 예시>
vector<string>::size_type cnt;
cnt = v.size();
clear 모든 원소를 삭제
erase 특정 위치의 원소나 지정 범위의 원소를 삭제
(매개변수는 iterator)
<사용예시>
v.erase(v.begin(), v.end()); //clear와 똑같이 동작
swap 각 벡터의 원소(들)를 서로 바꾼다.

 

'[C_C++]이론 공부 > 이론+STL' 카테고리의 다른 글

[C++ STL] set 사용법 위주 공부  (0) 2021.06.29
[C++] 클래스(class) 기본  (0) 2021.06.01
OOP(객체지향 프로그래밍)의 주요특징  (0) 2021.05.21
[C++] 데이터 타입(자료형)  (0) 2021.05.20
[C++] 메모리 영역 (메모리 구조), 정적할당과 동적할당  (0) 2021.05.20
    '[C_C++]이론 공부/이론+STL' 카테고리의 다른 글
    • [C++ STL] set 사용법 위주 공부
    • [C++] 클래스(class) 기본
    • OOP(객체지향 프로그래밍)의 주요특징
    • [C++] 데이터 타입(자료형)
    코딩굼벵이
    코딩굼벵이
    구르는 재주 연마 중

    티스토리툴바