키워드 및 STL 함수(C++)

MwG·2025년 1월 3일

C++

목록 보기
7/14

nodiscard 키워드

개발자가 함수 반환값을 반드시 사용해야 하는 상황에서 실수를 방지하도록 돕는 도구이다.

[[nodiscard]] int GetID(const std::wstring& userName)
{
	return DB.Get(userName);
}

int main()
{

	GetID(L"Kim");//반환값이 사용되지 않음
	int my_ID = GetID(L"Lee"); // 반환값이 사용됨
	
}

이런 경우일 때 사용되고 추가로

[[nodiscard("사용자에 대한 ID를 사용하지 않고 있습니다!")]] 
int GetID(const std::wstring& userName)
{
	return DB.Get(userName);
}

위와 같이 메시지를 추가하여 경고문으로 사용할 수 있다.

noreturn

함수가 반환하지 않을 것임을 컴파일러에 명시적으로 알리는 데 사용됩니다. 주로 프로그램 실행을 종료하거나, 무한 루프를 실행하거나, 예외를 던지는 함수에 적용된다.

1.프로그램 종료함수

#include <cstdlib>
#include <stdexcept>

[[noreturn]] void TerminateProgram() {
   std::exit(1); // 프로그램 종료
}

int main() {
   TerminateProgram();
   // 이 이후 코드는 절대 실행되지 않음
   return 0;
}
  1. 예외를 던지는 함수
[[noreturn]] void ThrowError() {
    throw std::runtime_error("Error occurred!");
}

void Process() {
    ThrowError();
    // 이 이후 코드는 절대 실행되지 않음
}

string_view

✅ 1. std::string_view의 특징
1️⃣ 문자열을 복사하지 않음 → 기존 문자열 데이터를 참조하여 빠름
2️⃣ 읽기 전용 → 문자열을 수정할 수 없음 (std::string과 다름)
3️⃣ 자동으로 C-스타일 문자열(const char*)과 std::string을 참조 가능
4️⃣ 길이를 저장하고 있음 → strlen()보다 size() 호출이 빠름

✅ 2. 기본 사용법

#include <iostream>
#include <string_view>

int main() {
    std::string_view sv = "Hello, World!";  // 문자열 리터럴 참조
    std::cout << sv << std::endl;           // Hello, World!
    std::cout << "Length: " << sv.size() << std::endl;  // 13
}

✔ 문자열을 복사하지 않고 참조만 수행
✔ .size()는 O(1) 연산 (C-스타일 문자열의 strlen()은 O(n))

std::string_view는 std::string과 유사한 인터페이스를 제공하지만, 읽기 전용 함수만 사용 가능합니다.

함수 설명 예제
size() 문자열 길이 반환 sv.size()
empty() 문자열이 비어 있는지 확인 sv.empty()
substr(pos, len) 부분 문자열 반환 (std::string_view) sv.substr(7, 5)
front() 첫 번째 문자 반환 sv.front()
back() 마지막 문자 반환 sv.back()
remove_prefix(n) 앞에서 n개 문자 제거 sv.remove_prefix(7)
remove_suffix(n) 뒤에서 n개 문자 제거 sv.remove_suffix(6)

유의 -> 원본 문자열이 사라질 시 오류 발생

0개의 댓글