본문 바로가기

전체 글49

Vector - Array와의 차이점과 쓰임새 최근 STL을 공부하며 알고리즘 문제풀이 시에 Vector를 유용하게 사용하고 있다. Vector는 임의 접근 반복자를 지원하는 배열 기반의 컨테이너이다. 하지만 앞으로 Array와 Vector에 대해서 명확히 구분을 해 사용하고 싶어,이번 포스팅은 두 가지를 비교해보는 글을 작성해 보았다. Array Vector 타입 기본적 자료구조 STL 컨테이너 메모리 선언시 메모리 고정됨 메모리 재할당 용이 접근방식 Index 기반 랜덤접근 Iterator 기반 랜덤접근 접근속도 빠름 느림 ( 포인터를 통한 접근이기 때문) *랜덤접근 (Random Access) 무작위가 아닌 어디로든 똑같은 시간으로 접근 가능하다는 의미로서, 메모리의 주소만 알고 그곳을 지정하면 별다른 지연 없이 바로 접근할 수 있다는 의미 V.. 2021. 1. 22.
vector 사용 시 []연산자와 at() 멤버 함수의 차이 #include #include using namespace std; int main() { vector v; v.push_back(0); v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); for (vector::size_type i = 0; i < v.size(); ++i) { cout 2021. 1. 21.
함수 객체와 그 활용성에 관하여 함수객체(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.