프로그래밍 공부
작성일
2024. 1. 11. 07:52
작성자
WDmil
728x90

1.4 표준 라이브러리

 

C++는 유용한 클래스를 표준 라이브러리로 제공한다.

 

표준 라이브러리에 정의된 클래스를 이용하면 중복해서 같은 기능의 클래스를 개발하는 부담을 피할 수 있다.

 

뿐만 아니라 표준 라이브러리 클래스들은 오랜 시간 많은 사람들에 의해 검증되었기 때문에, 오류의 가능성또한 적다.

 

성능 최적화 또한 충분히 되어있기 때문에, 같은 기능의 클래스 라면 개발자가 직접 작성하는 것 보다 더 뛰어나다.


 

표준 라이브러리에서 제공하는 기능은 매우 방대하다.

 

C++을 처음 시작할 때 표준 라이브러리에 어떤 기능이 있고 내가 목적하는 프로그램에 어떻게 쓰일 수 있을지 먼저 알아보는 것이 좋다.

 

특히 C를 먼저 사용하던 프로그래머는, C++를 사용하면서도 C에서 사용하던 습관대로 문제를 해결하려할 수 있는데,

 

C++표준 라이브러리를 이용하면 더 쉽고 안전함으로 표준 라이브러리로 할 수 있는 일을 파악하는 것이 더 중요하다.

 

1.4.1 std::vector

 

표준 라이브러리는 컨테이너 라는 개념도 제공하는데,

 

예를들어 std::vector 클래스는 C의 배열을 대체하는 것 으로, 훨씬 더 유연하고 안전하다.

 

std::vector를 이용하면 런타임에 동적으로 항목을 추가하거나 삭제할 수 있고, 그에따른 메모리 할당과 해제도 자동으로 해주기 때문에 편리하다.

 

이러한 컨테이너 항목을 순회하기 위해서 반복자(iterator)라는 개념도 도입하고 있다.

 

이러한 컨테이너는 기본적인 사용 방법이 매우 쉽다.

 

#include <string>
#include <vector>
#include <iostream>
#include <iterator>

using namespace std;
int main()
{
	// 유니폼 초기화를 이용하여 string vector 생성
    vector<string> myVector = {"A first string", "A second string"};
    
    // 몇몇 string은 push_back 메서드를 이용해서 vector 추가.
    myVector.push_back("A third string");
    myVector.push_back("The last string in the vector");
    
    // 구간 지정 for 루프를 이용하여 항목을 출력
    for (const auto& str : myVector)
    	cout << str << endl;
    
    // 반복자를 이용해서 vector를 순회하며 한번더 항목 출력
    for (auto iterotr = cbegin(myVector);
    	iterator != cend(myVector); ++iterotr) {
        cout << *iterator << endl;
    }
    return 0;
}

 

위  코드에서의 myVector는 vector<string>으로 선언되었다.

 

<>는 템플릿 파라미터를 받는데 사용된다.

 

vector는 컨테이너의 일반형으로, vector는 어떤 종류의 객체라도 담을 수 있다.

 

단, vector 객체를 선언할 때 담을 객체에 대한 타입을 꺽쇠 괄호 안에 템플릭 파라미터로 지정해주어야 한다.

 

Vector에 항복을 추가할때는 push_back() 메서드 또는, 유니폼 초기화를 이용한다.

 

iterator의 타입에 auto 키워드를 사용하고있다.

 

auto  키워드 떄문에, 컴파일러가 반복자의 타입을 자동으로 연역하여, vector<string>::const_iterator 가 사용되게 한다.

728x90