[C++] std::span : 연속된 메모리를 복사 없이 넘기기
안녕하세요. 이번 글에서는 C++20에서 추가된 std::span에 대해 알아보겠습니다. 배열이나 vector를 함수에 넘길 때 보통 포인터와 길이를 따로 전달하거나, vector를 const 참조로 받는 방식을 씁니다. 전자는 길이를 잘못 넘기기 쉽고, 후자는 …
안녕하세요. 이번 글에서는 C++20에서 추가된 std::span에 대해 알아보겠습니다. 배열이나 vector를 함수에 넘길 때 보통 포인터와 길이를 따로 전달하거나, vector를 const 참조로 받는 방식을 씁니다. 전자는 길이를 잘못 넘기기 쉽고, 후자는 …
안녕하세요. 이번 글에서는 make와 do의 차이에 대해 알아보겠습니다. 두 동사 모두 우리말로는 “하다, 만들다”로 옮겨져서 어느 쪽을 써야 할지 헷갈리기 쉽습니다. 큰 흐름은 make는 없던 것을 만들어 내는 것, do는 …
안녕하세요. 이번 글에서는 C#의 확장 메서드(Extension Method)에 대해 알아보겠습니다. string이나 List처럼 직접 수정할 수 없는 타입에 기능을 더하고 싶을 때, 상속을 하거나 별도의 도우미 클래스를 만들 수도 있습니다. 확장 메서드를 …
안녕하세요. 이번 글에서는 C++17에서 추가된 std::variant에 대해 알아보겠습니다. 여러 타입 중 하나의 값만 담는 상황에서는 예전에는 union을 쓰거나 부모 클래스를 두고 상속을 이용했습니다. union은 현재 어떤 타입이 들어 있는지 직접 …
안녕하세요. 이번 글에서는 say, tell, speak, talk의 차이에 대해 알아보겠습니다. 네 단어 모두 우리말로는 “말하다”로 옮겨지지만, 영어에서는 뒤에 어떤 말이 오는지가 서로 다릅니다. 뜻을 외우기보다 어떤 형태로 쓰이는지를 구분해 두면 …
안녕하세요. 이번 글에서는 C#의 LINQ(Language Integrated Query) 기본 사용법에 대해 알아보겠습니다. 컬렉션에서 조건에 맞는 항목을 고르거나 정렬하고, 다른 형태로 바꾸는 작업을 for문과 if문으로 일일이 작성하면 코드가 길어집니다. LINQ는 이런 작업을 …
안녕하세요. 이번 글에서는 영어에서 자주 쓰이는 구동사(phrasal verbs)에 대해 알아보겠습니다. 구동사는 동사에 전치사나 부사가 붙어 하나의 새로운 뜻을 만드는 표현입니다. 원래 동사의 뜻만으로는 짐작하기 어려운 경우가 많고, 일상 대화에서는 한 …
안녕하세요. 이번 글에서는 C++17에서 추가된 std::string_view에 대해 알아보겠습니다. 문자열을 함수 인자로 넘길 때 const std::string&를 쓰면 문자열 리터럴이 들어올 때마다 임시 std::string이 만들어지고, const char*를 쓰면 길이를 매번 다시 계산해야 …
안녕하세요. 이번 글에서는 빈도부사의 의미와 문장 안에서의 위치에 대해 알아보겠습니다. 한국어는 “나는 보통 일찍 일어납니다”처럼 부사를 비교적 자유롭게 놓을 수 있지만, 영어의 빈도부사는 놓이는 자리가 어느 정도 정해져 있습니다. 뜻은 …
안녕하세요. 이번 글에서는 C#의 switch 식(switch expression)과 패턴 매칭(pattern matching)에 대해 알아보겠습니다. 기존 switch 문은 case마다 break를 쓰고 결과를 변수에 대입해야 해서 값을 고르는 용도로는 코드가 길어졌습니다. C# 8.0부터 값을 …