std::???

SSamYang·2024년 11월 18일
0

C++에서 std::C++ 표준 라이브러리에서 제공되는 이름공간(namespace)를 나타냅니다. std는 "standard"의 약자로, C++ 표준 라이브러리에 포함된 함수, 클래스, 객체 등을 그룹화한 네임스페이스입니다.


네임스페이스(namespace)란?

  • 네임스페이스는 이름 충돌을 방지하기 위해 코드의 이름을 묶어주는 기능입니다.
  • 동일한 이름의 변수, 함수, 클래스 등이 있을 때, 어떤 것을 사용할지 명확히 하기 위해 네임스페이스를 사용합니다.

std::의 의미

C++ 표준 라이브러리에서 제공되는 대부분의 기능(예: cout, vector, string 등)은 std라는 네임스페이스 안에 포함되어 있습니다.

따라서 std::를 붙여야 표준 라이브러리의 기능임을 명시할 수 있습니다.

예: std::cout

  • cout은 C++에서 콘솔 출력에 사용되는 객체입니다.
  • 이 객체는 C++ 표준 라이브러리에 정의되어 있으며, std 네임스페이스 안에 속해 있습니다.
    #include <iostream>int main() {
        std::cout << "Hello, World!" << std::endl; // std::를 명시
        return 0;
    }

std::를 사용하는 이유

  1. 이름 충돌 방지:
    • 다른 라이브러리에서 동일한 이름을 가진 객체나 함수가 있을 수 있습니다.
    • std::를 사용하면 명확히 표준 라이브러리의 것을 사용하는지 구분할 수 있습니다.
    • 예:
      namespace my_lib {
          void cout() {
              // 사용자 정의 함수
          }
      }
      
      int main() {
          my_lib::cout(); // 사용자 정의 함수 호출
          std::cout << "Hello"; // 표준 라이브러리 호출
      }
  2. 코드 가독성 향상:
    • std::를 붙임으로써 코드의 출처를 명확히 알 수 있습니다.

std::를 생략하는 방법

std::를 매번 쓰는 것이 번거로울 수 있습니다. 이를 생략하려면 using 키워드를 사용하여 네임스페이스를 명시적으로 선언할 수 있습니다.

방법 1: 특정 항목만 사용

#include <iostream>using std::cout;  // cout만 std:: 없이 사용 가능

int main() {
    cout << "Hello, World!" << std::endl; // endl은 여전히 std:: 필요
    return 0;
}

방법 2: 전체 네임스페이스를 사용

#include <iostream>using namespace std; // std 네임스페이스 전체를 사용

int main() {
    cout << "Hello, World!" << endl; // std:: 없이 사용 가능
    return 0;

주의: using namespace std;를 사용하면 모든 std 멤버를 가져오므로 이름 충돌 위험이 커질 수 있습니다. 큰 프로젝트나 협업 환경에서는 권장되지 않습니다.


주요 std:: 기능

1. 입출력 (<iostream>)

#include <iostream>int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

2. 컨테이너 (<vector>, <map>, 등)

#include <vector>#include <iostream>int main() {
    std::vector<int> numbers = {1, 2, 3};
    for (const auto& num : numbers) {
        std::cout << num << " ";
    }
    return 0;
}

3. 문자열 처리 (<string>)

#include <string>#include <iostream>int main() {
    std::string name = "C++";
    std::cout << "Language: " << name << std::endl;
    return 0;
}

4. 알고리즘 (<algorithm>)

#include <vector>#include <algorithm>#include <iostream>int main() {
    std::vector<int> nums = {3, 1, 4, 1, 5};
    std::sort(nums.begin(), nums.end()); // 정렬
    for (const auto& num : nums) {
        std::cout << num << " ";
    }
    return 0;
}

정리

  • std::는 C++ 표준 라이브러리의 기능을 사용할 때 명시적으로 사용됩니다.
  • 이름 충돌을 방지하고 코드의 가독성을 높이기 위해 사용됩니다.
  • using namespace std;를 사용하여 생략할 수 있으나, 이름 충돌 가능성이 있으므로 신중히 사용해야 합니다.
profile
공부 기록장📕

0개의 댓글