코딩 모닥불
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기
      • C++
      • 표준 라이브러리
      • 백준(BOJ)
  • 홈
  • 태그
  • 방명록
표준 라이브러리

[C++] 내부 삽입을 통해 원소를 추가할 수 있는 std::emplace

std::emplace 함수std::emplace 함수는 C++ 표준 라이브러리의 컨테이너들( vector, list, set, map, deque 등 )에 새로운 원소를 삽입하는 함수입니다. 이와 비슷한 함수로 std::vector의 emplace_back, std::list의 emplace_front, emplace_back, std::map의 emplace_hint 등이 있지만, 이 함수들은 특별한 경우에 최적화된 기능을 구현하기 위해 필요한 인자를 더 받을 뿐, emplace 함수와 동작하는 원리는 같습니다. 그리고, 원시 데이터( int, float 등 )를 추가하는 경우엔 insert와 emplace 함수와의 차이점은 없습니다. 하지만, 클래스 타입의 데이터를 다루는 경우엔 사용하는 방법에 따..

2025. 3. 27.
표준 라이브러리

[C++] 여러 개의 값을 저장할 수 있는 std::tuple

std::tuple 사용법std::tuple은 여러 개의 값을 저장하는 데 쓰이는 C++ 표준 라이브러리의 유틸리티 클래스입니다. std::pair 클래스 같은 경우 2개의 값만을 저장할 수 있는데 반면, tuple은 저장할 수 있는 값의 개수에 제약이 없습니다. 그래서, 함수에 여러 개의 값들을 전달하거나, 함수로부터 반환받는 경우에 아주 유용합니다. 이 tuple 클래스를 사용하려면, 먼저 다음의 헤더 파일을 포함해야 합니다.#include 그리고, tuple 변수를 선언하려면 다음과 같이 합니다.#include // for std::tupleint main(){ tuple tup1(3.14); // direct initialization tuple tup2{ 2, 5..

2025. 3. 26.
C++

[C++] null 포인터와 nullptr 리터럴( literal )

null 포인터( pointer )포인터( pointer )는 객체의 메모리 주소를 저장하는 변수입니다.그리고 아래와 같이, 포인터 ptr이 객체 x의 주소를 저장하고 있는 상태를, "포인터 ptr이 객체 x를 가리키고 있다"라고 얘기합니다.int x = 0;int* ptr = &x; // 객체 x를 주소를 저장 그런데, 포인터는, 참조( reference )와 달리, 현재 가리키고 있는 객체가 없을 수도 있습니다.이러한 포인터를 null 포인터( pointer )라고 합니다. 그리고, null 포인터를 만드는 방법은 다음과 같이 선언하는 것입니다.int* null_pointer{}; // value-list initialization위의 값-리스트 초기화는, 리스트 초기화( list initializa..

2025. 3. 26.
C++

[C++] C-style 문자열의 특징

C-style 문자열C++을 처음 배울 때, 대부분 아래와 같은 예문을 보게 됩니다.#include int main(){ std::cout 그리고, 이 예문에 사용된 "Hello, world!"가 C-style 문자열입니다. 이것을 좀 더 정확하게 정의하자면,C-style 문자열은 문자열 타입을 가진 리터럴( literal )이다라고 할 수 있습니다. 여기서, 문자열 타입이란 문자 배열( char array )을 말하고, 리터럴( literal )은 값을 직접 나타내는 프로그램 요소를 가리키는 단어입니다. 아래의 예제들을 통해, 이러한 리터럴의 개념을 알 수 있습니다.#include int main(){ int variable = 10; // integer literal ..

2025. 3. 25.
표준 라이브러리

[C++] 초기값 리스트를 이용한 객체 초기화와 std::initializer_list

리스트 초기화( list initialization )배열을 여러 원소들로 초기화하려면, 다음과 같이 리스트 초기화( list initialization )를 사용하면 됩니다.int main(){ int intArray[] { 1, 2, 3, 4, 5 }; // list initialization for( int x : intArray){ // 범위 기반 for cout 여기서 말하는 리스트 초기화( list initialization )는, C++에서 변수를 초기화하기 위한 세 가지 방법 중 하나입니다. [C++] 초기화( initialization )의 세 가지 방법변수의 초기화( initialization )C++을 사용해서, 코딩을 하다 보면 의외로 다양한 방법으로 변수를 ..

2025. 3. 24.
C++

[C++] 초기화( initialization )의 세 가지 방법

변수의 초기화( initialization )C++을 사용해서, 코딩을 하다 보면 의외로 다양한 방법으로 변수를 초기화할 수 있음을 알게 됩니다. 그런데, 대부분은 자기만의 특정한 방식의 초기화 방법을 선호하고, 또 그렇게 하더라도 문제가 되는 일이 거의 없습니다. 그렇지만, 초기화의 방법 간에 미묘한 차이점이 있기 때문에, 한 가지 방법만으로는 모든 상황을 만족시킬 수는 없는 경우가 있습니다. C++에서 변수를 초기화려면, 아래의 세 가지 중에 한 가지 방법을 사용할 수 있습니다. 복사 초기화( copy initialization )직접 초기화( direct initialization )리스트 초기화( list initialization ) 아무리, 초기화의 방법이 복잡하고 다양해 보이더라도 결국은 이..

2025. 3. 23.
C++

[C++] 변환 생성자와 암시적인 변환을 금지하는 explicit

변환 생성자( converting constructor )변환 생성자는 암시적인 타입 변환을 위해 호출되는 생성자를 말합니다. 먼저, 암시적인 타입 변환의 예를 보겠습니다.void printVal(double val){ cout main 함수에서 printVal 함수를 int 타입의 인자로 호출하게 되면, 컴파일러는 먼저 int 타입 매개 변수를 가진 함수를 찾습니다. 만약, 그러한 함수가 없다면 "숫자 변환 규칙"에 따라, int 타입을 대신할 수 있는 타입( 여기서는 double )을 매개 변수로 가진 함수를 찾아서 호출하려고 합니다.그렇게 하기 위해서, 컴파일러는 자동으로 int 타입의 값을 double 타입의 값으로 변환합니다.이것이 암시적인 타입 변환( implicit type conve..

2025. 3. 21.
C++

[C++] C-style 타입 변환과 C++의 static_cast

암시적인 타입 변환과 명시적인 타입 변환암시적인 타입 변환( implicit type conversion )은 변수나 표현식의 타입이 일치하지 않는 경우, 컴파일러가 자동으로 필요한 타입으로 변경하는 것을 말합니다. 아래의 예문에서 암시적인 형 변환을 보여줍니다.int main(){ double val = 10 / 4; // 암시적인 형 변환 cout ▼출력double type value: 2위에서, 컴파일러는 10/4의 int 값을, double 타입의 변수에 대입하기 위해서, 자동으로 double 타입의 값으로 변경합니다. 그런데, 위의 결과는 문제가 좀 있네요. val의 값이 2.5가 되기를 기대했지만, 실제는 2가 되었습니다. 이렇게 된 이유는 10/4의 int 연산 수행을 먼저 하고,..

2025. 3. 21.
C++

[C++] const 속성을 제거하는 mutable 키워드

const 멤버 함수와 mutableconst 멤버 함수는 함수 내에서 const 멤버 변수뿐만 아니라, 일반 멤버 변수의 값도 바꿀 수 없도록 제한을 건 클래스 멤버 함수입니다. [C++] 객체를 변경할 수 없는 const 멤버 함수const 멤버 함수C++에서는 기본 타입에 const 키워드를 붙여 값을 변경할 수 없는 변수를 정의할 수 있습니다. 그리고, 이러한 변수는 값을 변경할 수 없으므로, 정의할 때 반드시 초기화 과정을 거codingbonfire.tistory.com그래서, const 멤버 함수 내에서는, 멤버 변수의 값을 수정할 가능성이 있는, 일반 멤버 함수도 사용할 수 없습니다. 하지만, 경우에 따라 멤버 변수의 값을 변경하는 것이 필요한 때가 있습니다. 그때 사용할 수 있는 키워드가 ..

2025. 3. 20.
표준 라이브러리

[C++] 문자열을 읽기 전용으로 참조하는 std::string_view

std::string_viewstd::string_view는 문자열을 사용하면서 발생하는, 무거운 복사 과정을 줄이고자 만든 클래스입니다. C++ 17 이상의 버전에서 사용할 수 있는, 이 클래스는 실제 원본 문자열을 읽기 전용 방식으로 참조하는 기능을 합니다. string_view가 동작하는 방법은 다음의 비유를 통해 이해할 수 있을 것입니다. 자동차를 그리는 데는 두 가지 방법이 있습니다. 하나는 자동차를 사서 세워두고 그리는 방법입니다.하지만, 이 경우는 값 비싼 비용을 감당해야 합니다. 다른 하나는 남이 세워둔 자동차를 창 너머에서 보며, 그리는 방법입니다. 남의 차니까 그 차의 외형을 변경하거나 위치를 옮길 수는 없지만, 이 방법은 많은 비용이 들지 않습니다. 위의 두 번째 방법이 string_..

2025. 3. 19.
  • «
  • 1
  • ···
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • ···
  • 11
  • »

전체 카테고리

  • 분류 전체보기
    • C++
    • 표준 라이브러리
    • 백준(BOJ)

블로그 인기글

태그

  • #std::vector
  • #const
  • #using
  • #예외 처리
  • #decltype
  • #이진 탐색
  • #std::stack
  • #동적 계획법
  • #포인터
  • #복사 생성자
  • #초기화
  • #Lamda
  • #std::sort
  • #함수 객체
  • #namespace
  • #std::queue
  • #전방 선언
  • #std::unique_ptr
  • #범위 기반 for
  • #전처리기
  • #헤더 가드
  • #static_cast
  • #Enum
  • #상수 표현식
  • #깊이 우선 탐색
  • #std::string_view
  • #auto
  • #constexpr
  • #소멸자
  • #inline
MORE
애드센스 광고 영역
Powered by Privatenote Copyright © 코딩 모닥불 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바