본문 바로가기

전체 글240

Tip of the Week #42: Prefer Factory Functions to Initializer Methods Originally posted as totw/42 on 2013-05-10 By Geoffrey Romer (gromer@google.com) Revised 2017-12-21 예외가 허용되지 않는 환경(예: Google 내)에서 C++ 생성자는 호출자에게 실패를 보고할 방법이 없기 때문에 효과적으로 성공해야 한다. 물론 abort()를 사용할 수 있지만 그렇게 하면 전체 프로그램이 충돌하며 이는 종종 상품화 코드에서 허용되지 않는다. 클래스의 초기화 로직이 실패 가능성을 피할 수 없는 경우, 한가지 일반적인 접근 방식은 클래스에 초기화 메서드(initializer method)("init method"라고도 함)를 제공하는 것이다. 이 메서드는 실패할 수 있는 초기화 작업을 수행하고, return값을.. 2022. 5. 20.
Google C++ Style Guide : 범위(Scoping) Scoping 네임스페이스 (Namespaces) 몇 가지 예외들을 제외하고는 네임스페이스에 코드를 배치한다. 네임스페이스는 프로젝트 이름과 가능한 경로를 기준으로 고유한 이름을 가져야 한다. using 지시문을 사용하지 마라 (예 : using namespace foo) 인라인 네임스페이스를 사용하지 마라. 명명되지 않은 네임스페이스에 대해서는 내부 연계(Internal Linkage)를 참조하라. 정의: 네임스페이스는 전역 범위를 고유한, 명명된 범위로 세분화하므로 전역 범위에서 이름 충돌을 방지하는데 유용하다. 장점: 네임스페이스는 대부분의 코드가 합리적으로 짧은 이름을 사용할 수 있도록 하면서 대규모 프로그램에서 이름 충돌을 방지하는 방법을 제공한다. 예를 들어 두 개의 서로 다른 프로젝트에 전역.. 2022. 5. 16.
Codewars - [7 kyu] Reverse words Questions space 마다 단어를 반대로 만들어서 리턴해주는 문제이다. space의 개수 만큼 reverse words에도 추가해줘야 한다. Examples "This is an example!" ==> "sihT si na !elpmaxe" "double spaces" ==> "elbuod secaps" Solutions using namespace std; int checkEmptyCount(string str, int startIndex) { int count = 0; for(int i=startIndex; i 2022. 5. 3.
Google C++ Style Guide : 헤더 파일(Header Files) 헤더 파일(Header Files) 일반적으로 모든 .cc 파일에는 연관된 .h 파일이 있어야 한다. 유닛 테스트 및 main() 함수만 포함하는 작은 .cc 파일과 같은 몇 가지 common 예외가 있다. 헤더 파일을 올바르게 사용하면 코드의 가독성, 사이즈 및 성능에 큰 차이를 가져올 수 있다. 다음의 규칙들은 헤더 파일을 사용할 때 발생하는 다양한 위험에 대해 소개한다. 자체 포함 헤더 (Self-contained Headers) 헤더 파일은 독립적이어야 하고(자체적으로 컴파일해야 함) .h로 끝나야 한다. 포함을 위한 비헤더 파일은 .inc로 끝나야 하며 신중하게 사용해야 한다. 여기서 포함을 위한 비헤더 파일은 무엇일까? An .inc file is not a header file. it cou.. 2022. 5. 1.
Codewars - [5 kyu] Simple assembler interpreter Assembler로 들어온 문자열을 해석하여 실행하여 unordered_map로 구성된 저장된 값들을 반환하는 문제이다! MAIN #include #include Describe(SolutionTest) { It(Simple1) { std::vector program{ "mov a 5", "inc a", "dec a", "dec a", "jnz a -1", "inc a" }; std::unordered_map out{ { "a", 1 } }; Assert::That(assembler(program), Equals(out)); } }; ANSWER #include #include #include std::vector split(const std::string line) { std::vector splite.. 2022. 4. 29.
C++14 : 람다 캡처 표현식(Lambda capture expressions) C++11 람다 함수는 값 복사 또는 참조로 외부 범위에서 선언된 변수를 캡처한다. 이는 람다의 값 멤버가 이동 전용 타입이 될 수 없음을 의미한다. C++14에서는 캡처된 멤버를 임의의 표현식으로 초기화할 수 있다. 이를 통해 외부 범위에 해당하는 명명된 변수를 갖지 않고도 값 이동에 의한 캡처와 람다의 임의 멤버 선언을 모두 수행할 수 있다. 이것은 이니셜라이저 표현식을 사용하여 수행됩니다. auto lambda = [value = 1] {return value;}; 람다 함수 lambda는 초기화한 값인 1을 반환한다. 선언된 캡처는 자동으로 이니셜라이저 표현식에서 타입을 추론한다. 이것은 표준 std::move 함수를 사용하여 이동으로 캡처하는 데 사용할 수 있다. std::unique_ptr p.. 2022. 4. 28.
[경기/용인/마북] 치킨플러스 용인마북점에서 포테이토닥토닭 순살 먹었어요 안녕하세요! 오늘은 치킨플러스라는 치킨집에서 치킨을 주문해서 먹어봤습니다 ㅎㅎ 치킨플러스는 사실 잘 못 들어본 브랜드인데요... 색다른 치킨을 찾다가 검색해보니 치킨플러스가 '대한민국 치킨대전'에 나왔던 치킨이라고 하더라고요! 사실 방송은 보지는 않았는데 뭔가 대한민국 치킨대전이라고 하니 진짜 맛있는 치킨집만 나오지 않았을까....? 하는 생각이 들어서 궁금해서 시켜봤습니다 ㅋㅋㅋ 집 근처에 마침 치킨플러스가 있길래 바로 주문을 시켰습니다~ 순살 하고 뼈랑 고민하다가... 순살이 닭다리살 100%라길래 바로 순살 고고했죠 ㅋㅋ 요새 닭다리살 100% 하는 곳이 거의 없잖아요? 제가 시켜먹은 곳은 치킨플러스 용인마북점에서 시켜먹었습니다~ 치킨에 행복을 더하다라는 슬로건인가 봐요~ 치킨은 언제나 진리죠 ㅠㅠ.. 2022. 4. 25.
Google C++ Style Guide 번역 정리 : C++ Version Google C++ Style Guide 번역 정리 Google C++ Style Guide 번역 정리 차례 C++ Version - C++ Version 헤더 파일 - Header Files 자체 포함 헤더 - Self-contained Headers #define가드 - The #define Guard 사용하는 항목 포함 - Include What You Use 전방 선언 - Forward Declarat.. mypark.tistory.com C++ Version 현재 코드는 C++17을 대상으로 해야 한다. 즉, 지정된 초기화(designated initializers)를 제외하고 C++2x 기능을 사용해서는 안된다. 이 가이드의 대상이 되는 C++버전은 시간이 지남에 따라 (공격적으로) 발전할 것.. 2022. 4. 15.
300x250