목록𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆/𝐂++ (32)
도순씨의 코딩일지
🌼 함수 객체의 종류 함수 객체(function object)는 함수자와 같은 말로, operator() 연산자를 오버로딩한 클래스 객체입니다. 다음 예제는 함수 객체, 함수, 함수 포인터 조건자로 조건을 판단하는 예제입니다. ⭐️ 세 가지 조건자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include using namespace std; struct LessFunctor{ // 1. 함수 객체 조건자 bool operator()(int left, int right) const{ return left
다음 예제는 순차열 모든 원소의 합을 구하는 예제입니다. ⭐️ accumulate() 알고리즘 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include #include #include using namespace std; int main(void){ vector v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); cout
🌼 정렬된 범위 알고리즘 정렬된 범위 알고리즘(sorted range algorithm)은 정렬된 구간에서만 동작하는 알고리즘입니다. 따라서 순차열이 반드시 정렬이 돼어 있어야 한다는 조건이 붙습니다. 먼저 이진탐색 예제를 살펴봅시다. ⭐️ binary_search() 알고리즘 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include #include using namespace std; int main(void){ vector v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); if(binary_search(v.begin(), v..
🌼 변경 알고리즘 변경 알고리즘 은 순차열의 원소를 서로 교환하거나 이동하여 순차열 원소의 순서를 변경시켜줍니다. 원소의 순서를 순열(permutation)처럼 변경할 때 next_permutation()과 prev_permutation 알고리즘을 사용합니다. 10, 20, 30의 순차열을 사전순 순열로 만들어 출력하는 next_permutation() 알고리즘 예제입니다. ⭐️ next_permutation() 알고리즘 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include #include #include using namespace std; int main(void){ vector v; v.push_back(10..
원소를 수정하는 알고리즘(modifying algorithms)은 원소의 값을 변경하거나 목적지 순차열로 원소를 복사하는 알고리즘입니다. v1의 순차열을 v2의 순차열로 복사하는 copy() 알고리즘 예제입니다. ⭐️ copy() 알고리즘 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include #include #include using namespace std; int main(void){ vector v1; v1.push_back(10); v1.push_back(20); v1.push_back(30); v1.push_back(40); v1.push_back(50); vector v2(5); v..
원소를 수정하지 않는 알고리즘(nonmodifying algorithms)은 원소의 순서나 원소의 값을 변경하지 않고 원소를 읽기만 하는 알고리즘입니다. 먼저 다음 예제는 adjacent_find() 알고리즘 예제로 vector의 순차열에서 현재 원소와 다음 원소가 같아지는 첫 원소의 반복자를 반환합니다. ⭐️ adjacent_find() 알고리즘 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include #include #include using namespace std; int main(){ vector v; v.push_back(10); v.push_back(20); v.push_back(30..
🌼 map 컨테이너 map 컨테이너는 원소를 key와 value의 쌍으로 저장합니다. 원소의 key는 컨테이너에 중복저장될 수 없습니다. 만약 중복 key를 사용해야 한다면 multimap을 사용하면 됩니다. 다음은 map 컨테이너 생성과 원소 저장을 위한 insert() 함수입니다. ⭐️ map의 insert() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include #include using namespace std; int main(void){ map m; m.insert(pair(5, 100)); m.insert(pair (3, 100)); m.insert(pair (8, 30)); m.insert(pair ..
multiset은 set과 다르게 key가 중복으로 저장될 수 있습니다. 다음 예제는 중복 원소를 허용하는 multiset의 insert() 멤버 함수 예제입니다. ⭐️ multiset의 insert() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include #include using namespace std; int main(void){ multiset ms; multiset::iterator iter; ms.insert(50); ms.insert(30); ms.insert(80); ms.insert(80); ms.insert(30); ms.insert(70); iter = ms.insert(10); cout