반응형

개발 106

g

[C++] class 생성자에서 explicit 키워드의 의미

오늘은 class 생성자에 대해서 공부하다가 알게 된 explicit 키워드의 의미에 대해서 알아보겠습니다. class 생성자에서 explicit 키워드의 의미 explicit 키워드 C++에서 `explicit` 키워드는 주로 클래스의 생성자에 사용되며, 해당 생성자가 암시적 형 변환을 허용하지 않도록 지정하는 데 사용됩니다. `explicit` 키워드를 사용하면 해당 생성자가 명시적으로 호출되어야 하며, 암시적 형 변환이 자동으로 수행되지 않습니다. 1. 형 변환 오류를 방지: 암시적 형 변환이 허용되면 예상치 못한 형 변환이 발생할 수 있으며, 이는 버그의 원인이 될 수 있습니다. `explicit` 키워드를 사용하면 이러한 형 변환이 방지됩니다. 2. 의도적인 호출 강조: `explicit` 키워..

개발/C, C++ 2023.09.05

g

[C++] STL 컨테이너 Set과 Map 활용법과 차이점

컨테이너 중에서 많이 사용되는 Vector에 대해 알아보았고 그 다음으로 C++에서 많이 사용되는 Set와 Map 컨테이너에 대해서 알아보고 활용법과 차이점에 대해서 정리해 보도록 하겠습니다. C++의 Set과 Map 활용법과 차이점 Set: 중복 없이 유일한 값 관리 Set은 중복된 값을 허용하지 않는 데이터 구조입니다. 이를 통해 유일한 값을 저장하고 관리할 수 있습니다. 값을 정렬된 순서로 저장하며, 내부적으로는 레드-블랙 트리(Red-Black Tree) 또는 비슷한 자료 구조를 사용하여 빠른 검색 및 삽입을 제공합니다. 이러한 특징 때문에 집합 연산에 유용하게 사용할 수 있습니다. #include std::set mySet; mySet.insert(10); mySet.insert(20); myS..

개발/C, C++ 2023.09.02

g

[C++] STL 컨테이너 Vector 의 용도와 특징, 사용 예제

C언어에서 C++언어로 오면서 특징 중에 하나가 컨테이너입니다. STL에서 제공하는 여러 가지의 컨테이너에 대해서 알아볼 텐데 오늘은 가장 중요하고 많이 사용되는 Vector에 대해서 알아보도록 하겠습니다. STL 컨테이너 Vector 의 용도와 특징, 사용 예제 Vector란 Vector는 순차적인 데이터를 저장하고 관리하는 데 사용됩니다. 예를 들어, 배열처럼 연속적인 메모리 공간에 데이터를 저장하며, 데이터를 추가, 삭제, 수정하거나 검색하는 작업을 효율적으로 수행할 수 있습니다. 즉 전통적인 C스타일의 배열과 매칭되는 컨테이너입니다. Vector의 특징 동적 크기 조절 Vector는 크기를 동적으로 조절할 수 있기 때문에 초기에 얼마나 많은 요소가 필요한지 미리 알 필요가 없습니다. 이로써 메모리..

개발/C, C++ 2023.09.01

g

[개발 환경] WSL GitHub clone, 네트워크 실패 시 nameserver 변경 방법

WSL을 새로 설치하다가 git clone을 받았는데 실패하는 경우가 종종 있습니다. 이런 경우 원인이 DNS와 연관된 경우가 많은데 이런 경우에 어떻게 해결하는지 알아보도록 하겠습니다. WSL GitHub clone, 네트워크 실패 시 nameserver 변경 방법 어떤 에러가 발생하는지 새롭게 설치하거나 네트워크에 문제가 발생하였을 때 git clone을 하면 문제가 발생할 수 있습니다. Network is unreachable 나 Could not resolve host와 그럴 때 네트워크 문제인지 확인하는 방법이 ping입니다. ping github.com 아래와 같은 정상적인 응답이 오지 않는다면 DNS 문제임을 의심해보아야 합니다. 왜 발생하는지 일반적으로 WSL을 사용하면 IP 주소를 Dyn..

g

[개발 환경] WSL 문제 발생 시 추가로 설치하는 방법

WSL을 사용하다가 문제가 발생하거나 새로운 버전을 사용해보고 싶을 때가 있습니다. 이럴 때 어떻게 설치하는 것인지 설치 방법에 대해서 알아보도록 하겠습니다. WSL 문제 발생 시 추가로 설치하는 방법 추가 설치가 필요한 경우 리눅스 환경에서 개발하다 보면 환경 설정이 여간 어려운 것이 아닙니다. 아래와 같은 경우들이 있을 것 같아요. 기본 제공 패키지가 깨졌다. 설정한 지 너무 오래돼서 어디다가 어떻게 설정했는지 모르겠다. 가이드 대로 신규 설치를 했는데 자꾸 에러가 뜬다. 기본 동작이 어느 순간부터 안되는데 아무리 찾아봐도 해결할 수가 없다. 새롭게 배우는 사람에게 환경 설정을 알려줘야 할 때 어떻게 했는지 기억이 안 난다. 등등.. 윈도와 같이 사용자 친화적이지 않은 리눅스 환경에서 개발하다 보면 ..

g

[컴파일러] LLVM, Clang 설치 방법, 명령어 및 버전 변경 방법

LLVM 프로젝트의 일부인 Clang 컴파일러를 설치하는 방법을 알아보도록 하겠습니다. Clang 컴파일러란? Clang은 LLVM 프로젝트의 컴파일러 중 하나로 C, C++, Objective-C를 위한 최적화된 컴파일러입니다. Clang은 높은 표준 준수도와 빠른 컴파일 속도로 유명하며, 대부분의 경우 기본 컴파일러로 사용됩니다. LLVM/Clang 설치하기 (apt 명령어) Ubuntu에서 Clang을 설치하는 방법은 다음과 같습니다. sudo apt update sudo apt install clang 위 명령어를 터미널에서 실행하여 Clang 컴파일러를 설치할 수 있습니다. LLVM/Clang 설치하기 (빌드된 바이너리 다운로드) 아래 버튼을 클릭하면 llvm의 빌드된 바이너리를 다운로드할 수 ..

g

[Linux] Ubuntu apt 명령어 종류, 예제 및 사용 방법

이번에는 Ubuntu 리눅스에서 사용되는 APT (Advanced Package Tool) 명령어에 대해 알아보겠습니다. APT는 패키지 관리 시스템으로, 소프트웨어 설치, 업데이트, 삭제 등을 편리하게 할 수 있게 해주는 도구입니다. APT란 무엇인가요? APT는 Ubuntu와 같은 Debian 기반의 리눅스 배포판에서 사용되는 패키지 관리 도구입니다. 이를 통해 소프트웨어 설치와 관리를 쉽게 할 수 있습니다. APT는 패키지의 의존성 관리와 버전 관리를 자동으로 해주므로 사용자가 번거로움 없이 소프트웨어를 관리할 수 있습니다. APT 명령어의 종류와 예제 1. 업데이트 (update) 시스템에 설치된 패키지 목록을 최신 상태로 업데이트합니다. sudo apt update 2. 업그레이드 (upgrad..

g

[코딩 테스트] 소프티어 연습 문제 - 성적평균 (C++)

소프티어 성적평균 문제를 풀어보았습니다. 소프티어 연습 문제 - 성적평균 (C++) https://softeer.ai/practice/info.do?idx=1&eid=389&sw_prbl_sbms_sn=249449 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 N명의 학생들의 성적이 학번순서대로 주어졌다. 학번 구간 [A, B]가 주어졌을 때 이 학생들 성적의 평균을 구하는 프로그램을 작성하라. 제약조건 1 ≤ N ≤ 10의 6 제곱인 정수 1 ≤ K ≤ 10의 4 제곱인 정수 1 ≤ Si ≤ 100 인 정수 1 ≤ Ai ≤ Bi ≤ N 입출력 예제 입력예제1 5 3 10 50 20 70 100 1 3 3 4 1 5 출력예제1 26.67 45.00 50.00 문..

g

[C++] 생성자에서 virtual 가상 함수 호출하는 경우의 문제

오늘은 생성자에서 가상함수를 호출하는 경우에 무엇이 문제가 되는지 알아보도록 하겠습니다. 생성자에서 virtual 가상 함수 호출하는 경우의 문제 이론적인 내용 C++ 생성자에서 가상 함수를 호출하는 것은 조심해야 하는 상황입니다. 가상 함수 호출은 객체의 실제 타입에 따라 동적으로 호출되는데, 생성자에서 가상 함수를 호출하면 예상치 못한 동작이 발생할 수 있습니다. C++에서 객체의 생성 과정은 다음과 같습니다: - 메모리 할당 - 기본 클래스의 생성자 호출 - 파생 클래스의 생성자 호출 가상 함수 호출은 객체의 실제 타입에 따라 동적으로 결정되는데, 생성자의 경우 파생 클래스의 생성자가 호출되기 전에 기본 클래스의 생성자가 호출되므로 파생 클래스의 가상 함수는 아직 초기화되지 않은 상태일 수 있습니다..

개발/C, C++ 2023.08.11

g

[C++] 복사 생성자(Copy Constructor) 의 이해 및 활용

오늘은 C++에서 복사 생성자의 개념에 대해서 알아보고 이해하는 시간을 가져보도록 하겠습니다. 복사 생성자(Copy Constructor)의 정의, 이해 및 활용 C++에서 복사 생성자는 중요한 개념 중 하나로, 객체를 복사하거나 전달할 때 사용되는 특별한 유형의 생성자입니다. 복사 생성자의 정의 복사 생성자는 객체의 내용을 다른 객체에 복사하는데 사용되는 특별한 생성자입니다. C++에서는 객체를 전달하거나 할당할 때마다 해당 객체의 복사 생성자가 호출됩니다. 기본적으로 C++ 컴파일러는 클래스에 대해 복사 생성자를 자동으로 생성해 주지만, 사용자가 직접 정의하여 커스터마이징 할 수도 있습니다. 기본 복사 생성자 기본 복사 생성자는 단순히 객체의 모든 멤버 변수들을 다른 객체에 복사하는 역할을 합니다. ..

개발/C, C++ 2023.07.27
반응형