본문 바로가기

C++13

Vector - Array와의 차이점과 쓰임새 최근 STL을 공부하며 알고리즘 문제풀이 시에 Vector를 유용하게 사용하고 있다. Vector는 임의 접근 반복자를 지원하는 배열 기반의 컨테이너이다. 하지만 앞으로 Array와 Vector에 대해서 명확히 구분을 해 사용하고 싶어,이번 포스팅은 두 가지를 비교해보는 글을 작성해 보았다. Array Vector 타입 기본적 자료구조 STL 컨테이너 메모리 선언시 메모리 고정됨 메모리 재할당 용이 접근방식 Index 기반 랜덤접근 Iterator 기반 랜덤접근 접근속도 빠름 느림 ( 포인터를 통한 접근이기 때문) *랜덤접근 (Random Access) 무작위가 아닌 어디로든 똑같은 시간으로 접근 가능하다는 의미로서, 메모리의 주소만 알고 그곳을 지정하면 별다른 지연 없이 바로 접근할 수 있다는 의미 V.. 2021. 1. 22.
함수 객체와 그 활용성에 관하여 함수객체(Functor)란 함수처럼 호출 가능한 클래스 객체 이다. 일반적으로 () 연산자를 오버로딩하여 사용된다. 따라서 일반적으로 객체지만 함수처럼 functor() 와 같은 형식으로 호출할 수 있어 직관적으로 사용할 수 있다. #include #pragma warning(disable : 4996) using namespace std; class Adder { public: int operator ()(int a, int b) const // () 연산자 오버로딩 { return a + b; } }; int main() { Adder add; //Adder 클래스의 함수객체 add 선언 int sum = add(10, 20); cout 2021. 1. 6.
연산자 오버로딩과 주의할 점 연산자 오버로딩은 C++에서 제공하는 기본 타입이 아닌 클래스 타입에서 사용자가 정의한 타입에도 연산자를 사용할 수 있게 하는 문법이다. 예문은 다음과 같다. #include using namespace std; class Point { int x; int y; public : Point(int _x = 0, int _y = 0) : x(_x),y(_y) {} void Print() const { cout 2020. 12. 23.
인라인 함수와 매크로 함수 인라인 함수와 매크로 함수 모두 (실행 파일의) 크기에 불리하고 속도에 유리하다는 특징을 가지고 있다. 하지만 인라인 함수는 이에 더해 추가적인 이점을 가진다. 타입을 확인하기에 산술 변환이 잘 처리된다. 지역 변수를 사용할 수 있다. 매크로 함수의 경우 전처리기능을 이용한 '단순 치환'의 역할만을 하기 때문이다. 컴파일 과정에서 인라인 함수와 달리 매크로 함수는 데이터 타입에 관한 문제를 발생할 수 없다. 이러한 점으로 미루어 보아 매크로 함수보다 컴파일러가 처리하는 인라인 함수가 더욱 상위호환의 역할을 할 수 있다고 볼 수 있다. 실제로 C++에서도 매크로 함수보다 인라인 함수 사용을 권장한다. 다만 아무리 inline 키워드를 붙여 인라인 함수로 선언하려 해도 불가능한 경우가 있다. 실제 인라인 함.. 2020. 11. 20.