C++ STL에서 벡터는 배열과 흡사하여 사용 빈도수가 높은 컨테이너중 하나이며 크기가 동적으로 변하는 배열이다.

vector

벡터는, 힙 메모리 공간에 생성되는 동적 할당되는 가변배열이다.

기본의 배열보다 효율적인 메모리관리가 가능하다. 

벡터의경우 선언해주었던 메모리의 크기가 꽉찼다면 메모리를 증설한다.

 

벡터의 메모리 할당방식의경우 실제 사용데이터수와 여유분을 포함한 개수로 되어있다.

하지만 메모리가 꽉찰경우 벡터의 메모리의 크기가 1.5배씩 증가하여 메모리크기가 크면클수록 증가하는 메모리가 더욱커진다.

또한 list 와 달리 원소를 추가하는것이아닌 ,

1.5배 증가된 배열을 생성한후 기존에 있던 배열에 있는 데이터를 복사를 하면서 늘려간다

계속 크기가 증가하면 복사비용이 들게된다. 이러한 복사비용을 줄이기위해서는 처음부터 여유있게 생성하는것이 중요할것같다. 

 

벡터 사용법

 

벡터를 사용하려면 vector 헤더파일을 include 해주면된다.

#include<vector>

 

vector 선언문이다

int main()
{
// vector int형, string형, float형 따로 선언
	
    std::vector<int> vectorInt;
    
    std::vector<std::string> vectorString;
    
    std::vector<float> vectorFloat;
    
    return 0;
}

 

vector 데이터를 넣는 방식이다.

생성한 벡터에 데이터를 넣으러면 push_back(데이터); 를 사용하여 데이터를 저장한다.

vectorint.push_back(10);
vectorint.push_back(20);
vectorint.push_back(30);

vectorString.push_back("10");
vectorString.Push_back("20");
vectorString.Push_back("30");

vectorFloat.push_back(10.0f);
vectorFloat.push_back(20.0f);
vectorFloat.push_back(30.0f);

 

vector에 잘 입력되었는지 출력을 해보자

#include <iostream>
#include <vector>
#include <string>
int main()
{
    std::vector<int> vectorInt;
    vectorInt.push_back(10);
    vectorInt.push_back(20);
    vectorInt.push_back(30);    

    std::vector<std::string> vectorString;
    vectorString.push_back("10");
    vectorString.push_back("20");
    vectorString.push_back("30");    

    std::vector<float> vectorFloat;
    vectorFloat.push_back(10.0f);
    vectorFloat.push_back(20.0f);
    vectorFloat.push_back(30.0f);
    
    for (int index = 0; index < 3; index++)
    {
        std::cout << vectorInt[index] << "\t";
        std::cout << vectorString[index] << "\t";
        std::cout << vectorFloat[index] << std::endl;
    }    
    return 0;
}

'개발 > c++' 카테고리의 다른 글

C++ STL 소개  (0) 2022.08.02

STL이란

STL은 표준 C++ 라이브러리의 일부분으로 Standard Templat Library의 약자입니다.
STL은 프로그램에 필요한 자료구조와 알고리즘을 템플릿으로 제공하는 라이브러리입니다.

코딩테스트에서 STL을 사용하면 손쉽게 자료구조와 알고리즘 문제를 원활히 풀수있습니다.

 

STL의 구성 요소로는

  • 컨테이터 (Container) 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 합니다.
  • 반복자 (Iterator) 포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다음원소를 가리키게 하는 기능을 합니다.
  • 알고리즘 (Algorithm) 정렬, 삭제, 검색 연상등을 제공하는 함수 템플릿입니다.
  • 함수객체 (Function Object) 함수처럼 동작하는 객체로 컨테이너와 알고리즘 등에 클라이언트 정택을 반여합니다.

 

STL의 컨테이너는 2가지로 나뉩니다.

  • 표준 시퀀스 컨테이너
  • 표준 연관 컨테이너

시퀀스 컨테이너는 모든요소들이 삽입 순서에 따라 상대적위치를 갖는 컨테이너입니다.

시퀀스 컨테이너 세가지가 있습니다

  • vector
  • list
  • deque
    • quere
    • priority queue
    • stack

연관 컨테이너는 삽인 순서와 상관없이 정렬 기준에 따라 원소의 위치가 결정됩니다.

연관 컨테이너는 네가지가 있습니다.

  • set
  • multiset
  • map
  • multimap

'개발 > c++' 카테고리의 다른 글

C++ STL(vector) 사용법  (0) 2022.08.11

+ Recent posts