본문 바로가기

분류 전체보기

(164)
가변 인자 함수(템플릿사용) #include using namespace std; // 재귀 호출 종료용 template void print(T arg) { std::cout
가변인자 함수 #include #include #include using namespace std; // 가변인자 함수 // void func(int num_args, ...); // 여러개의 매개변수를 받는 함수 double avg(double value, ...) { va_list ap; va_start(ap, value); int arg = value, result = 0; int count = 0; while (arg != 0.0) { count++; arg = va_arg(ap, double); result += arg; } va_end(ap); arg = (result / count); return arg; } int main() { printf("result : %.31f", avg(1.01, 34.02,..
std::map #include #include #include using namespace std; int main() { map mp1; mp1.insert(map::value_type(1,2)); mp1.insert(map::value_type(2, 5)); mp1.insert(map::value_type(3, 7)); mp1[6] = 11; mp1[7] = 21; mp1[3] = 8; mp1[5] = 4; map mp2; mp2[8] = 3; mp2[9] = 10; mp1.insert(mp2.begin(), mp2.end()); for (auto itr = mp1.begin(); itr != mp1.end(); ++itr) { cout first
std::queue 큐는 first in - first out 구조를 가지고 있다. 식당이나 놀이공원에서 줄을 먼저 선 순서대로 나가는 것이라고 생각해보자. #include #include int main() { std::queue q; q.push(1); q.push(2); q.push(3); q.pop(); q.push(4); }
std::deque 덱(deque)은 양방향 큐(double-ended queue)의 약자입니다. 덱의 필요조건 push_pront(), pop_front(), push_back(), push_pop_back() 동작이 o(1)의 시간 복잡도로 동작해야 합니다. 모든 원소에 대해 임의 접근 동작이 o(1) 시간 복잡도로 동작해야 합니다. 덱 중간에서 원소 삽입 또는 삭제는 o(n) 시간 복잡도로 동작해야 하며, 실제로는 최대 n/2 단계로 동작합니다. n은 덱의 크기입니다. 덱을 이용한 삽입 삭제 #include #include int main() { std::deque deq = { 1,2,3,4,5 }; // 맨 뒤에 0 추가 deq.push_front(0); // 맨 뒤에 6 추가 deq.push_back(6); //..
반복자 무효화 #include #include #include int main() { std::vector vec = { 1,2,3,4,5 }; auto v_it4 = vec.begin() + 4; vec.insert(vec.begin() + 2, 0); // --------------------------- std::list lst = { 1,2,3,4,5 }; auto l_it4 = next(lst.begin(), 4); lst.insert(next(lst.begin(), 2), 0); } 벡터와 리스트의 반복자 무효화 비교 벡터는 원소를 추가할 때 용량을 초과하게 되면 벡터의 모든 원소를 새 메모리 공간으로 복사하는 동작이 발생합니다. 그렇기 떄문에 이전에 사용하던 반복자를 사용하게 되면 오류를 발생시키게 됩니다..
std::list의 삽입 또는 삭제 함수 사용하기 std::list 삽입과 삭제 #include #include int main() { std::list list1 = { 1,2,3,4,5 }; list1.push_back(6); list1.insert(next(list1.begin()), 0); list1.insert(list1.end(), 7); list1.pop_back(); std::cout
기본적인 사용자 정의 컨테이너 만들기 #include #include struct singly_ll_node { int data; singly_ll_node* next; }; class singly_ll { public: using node = singly_ll_node; using node_ptr = node*; private: node_ptr head; public: void push_front(int val) { auto new_node = new node{ val, NULL }; if (head != NULL) new_node->next = head; head = new_node; } void pop_front() { auto first = head; if (head) { head = head->next; delete first; }..