목록분류 전체보기 (134)
오븐 노트
vector와 iterator의 일부 기능 구현 #include using namespace std; #include template class Iterator { public: Iterator() : _ptr(nullptr) { } Iterator(T* ptr) : _ptr(ptr) { } Iterator& operator++() // 자기 자신의 참조를 뱉어주는 전위형 { _ptr++; return *this; //int a = 1; //int b = ++(++a); // 자기 자신의 참조를 뱉어주는 형태 } Iterator operator++(int) // 복사된 값을 뱉어주는 후위형 { Iterator temp = *this; _ptr++; return temp; //int a = 1; //int..
#include using namespace std; #include // 매우 중요!!!!!!! int main() { // 컨테이너(Container): 데이터를 저장하는 객체 // vector (동적 배열) // - vector의 동작 원리 (size/capacity) // - 중간 삽입/삭제 // - 처음/끝 삽입/삭제 // - 임의 접근 // 반복자(Iterator) : 포인터와 유사한 개념. 컨테이너의 원소(데이터)를 가리키고, 다음/이전 원소로 이동 가능 vector v(10); v.reserve(1000); // 공간 확보 for (vector::size_type i = 0; i < v.size(); i++) // 벡터 한정으로는 iterator 포문과 큰 차이 없음 v[i] = i; //..
#include using namespace std; #include int main() { // 컨테이너(Container): 데이터를 저장하는 객체 // vector (동적 배열) // - vector의 동작 원리 (size/capacity) // - 중간 삽입/삭제 // - 처음/끝 삽입/삭제 // - 임의 접근 // 반복자(Iterator) : 포인터와 유사한 개념. 컨테이너의 원소(데이터)를 가리키고, 다음/이전 원소로 이동 가능 vector v(10); for (vector::size_type i = 0; i < v.size(); i++) // 벡터 한정으로는 iterator 포문과 큰 차이 없음 v[i] = i; //vector::iterator it; //int* ptr; //it = v...
#include using namespace std; #include int main() { // STL (Standard Template Library) // 프로그래밍 할 때 필요한 자료구조 / 알고리즘들을 템플릿으로 제공하는 라이브러리 // 컨테이너(Container) : 데이터를 저장하는 객체 (자료구조 Data Structure) // vector (동적 배열) // - vector의 동작 원리 (size/capacity) // - 중간 삽입/삭제 // - 처음/끝 삽입/삭제 // - 임의 접근 // 동적 배열 /*int arr[100]; // 대충 예를 들어 이런 느낌 int* arr2 = new int[100]; delete arr2; arr2 = new int[1000];*/ // 1) (..
#include using namespace std; class Item { public: public: int _itemId = 0; int _rarity = 0; int _ownerId= 0; }; class FindByOwnerId { public: bool operator()(const Item* item) { return (item->_ownerId == _ownerId); } public: int _ownerId; }; class FindByRarity { public: bool operator()(const Item* item) { return (item->_rarity >= _rarity); } public: int _rarity; }; template Item* FindItem(Item ..
#include using namespace std; // typename T(name)를 붙이면 어떤 타입도 다 넣을 수 있음 // 무조건 typename을 붙여야 하는 것은 아니다 // template 안에 들어가는건 [골라줘야 하는 목록]이라고 볼 수 있음 template class RandomBox { public: T GetRandomData() { int idx = rand() % SIZE; return _data[idx]; } public: T _data[SIZE]; }; // 템플릿 특수화 template class RandomBox { public: double GetRandomData() { cout