1. next_permutation 함수란?현재 순열(permutation)에서 다음 사전순 순열을 생성하는 함수이다. 이때, 순열 자체를 반환하는 것이 아니라, 원본 데이터를 직접 변경한다.next_permutation을 호출할 때마다 컨테이너(vector, string, array 등)의 요소가 다음 사전순 순열로 변경된다.모든 순열을 생성할 수 있다. next_permutation의 반환값은 bool 값이다.다음으로 생성할 순열이 존재하면 true를 반환하며, 다음으로 생성할 순열이 없다면 false를 반환한다.do-while문을 이용해 깔끔하게 사용할 수 있다. C++의 next_permutation은 algorithm 헤더에 포함되어 있다. 2. 기본 사용 예제 (순열)#include #inc..
1. std::fill특정 값으로 지정된 범위 전체를 채운다.std::fill(first, last, value); first, last: 값을 채울 범위의 시작과 끝을 나타내는 반복자.value: 채울 값. 2. std::fill_n반복자 시점에서 지정된 개수만큼 값을 채운다. 채울 요소의 개수가 명확히 정해져 있을 때 유용하다.std::fill_n(first, n, value); first: 채우기 시작할 반복자.n: 값을 채울 요소의 개수.value: 채울 값. 3. std::memset메모리 블록을 특정 바이트 값으로 채운다. 원시 배열이나 메모리 버퍼를 초기화하거나 메모리를 지울 때 사용한다. 메모리를 바이트 단위로만 다루기 때문에 조심히 사용해야 한다.std::memset(ptr, value,..
01.(문제를 잘 이해한 게 맞는지 모르겠다.)// 책에 서술된 대로 구현#include #include using namespace std;int cnt;void print(const string* s, int n = 0){ if (n == 0) { cnt++; cout > "; cout > "; cout 결과02.// 책에 서술된 대로 구현#include #include using namespace std;struct CandyBar{ string maker; double weight; int calories;};void SetCandyBar( CandyBar& candyBar, const char* ca..
friend 함수C++에서 클래스의 private 및 protected 멤버에 접근할 수 있도록 특별히 허용된 함수이다. 이를 연산자 오버로딩에 활용할 수 있다.왜 friend 함수가 필요할까?일반적으로 연산자 오버로딩은 멤버 함수 또는 비멤버 함수로 구현된다.멤버 함수로 오버로딩할 경우 연산자 왼쪽에 있는 객체가 반드시 해당 클래스의 객체여야 한다.예)// 왼쪽: 객체, 오른쪽: 객체Point(3, 4) + Point(3, 5) 하지만 비멤버 함수로 오버로딩할 경우 클래스의 비공개 멤버에 접근하려면 friend 키워드를 사용해야 한다.// 왼쪽: 클래스 객체가 아님, 오른쪽: 객체3 + Point(3, 4)3 + point(3, 4)객체가 아닌 기본 자료형(예: int)도 Point 클래스의 frien..
본 풀이는 제가 공부하면서 작성한 것이므로 정답이 아닐 수도 있습니다. 01.// 쌍을 이루는 두 수를 반복해서 입력할 것을 사용자에게 요구하는 프로그램// 두 수 중 적어도 어느 하나가 0으로 입력될 때까지 입력은 계속됨#include using namespace std;float HarmonicMean(int x, int y){ float a = static_cast(x); float b = static_cast(y); return 2.0f * a * b / (a + b);}int main(){ int m, n; cout > m >> n)) { cout 결과01 - 1. cin.ignore(100, '\n')의 의미더보기 입력 스트림에..
함수 원형은 컴파일러에게 함수의 인터페이스를 알려 준다. 즉, 리턴값이 있으면 그 리턴값의 데이터형을 컴파일러에게 알려 준다. 또한 매개변수의 개수와 각 매개변수의 데이터형을 컴파일러에게 알려 준다. 예double cube(double x);int main(){ double volume = cube(side);} 1.함수 원형은 cube()가 하나의 double 형 매개변수를 가진다는 사실을 컴파일러에게 알려 준다. 프로그램이 cube()에 매개변수를 제공하는 데 실패하면, 컴파일러는 함수 원형에 근거하여 에러를 검출한다. 2.cube() 함수는 계산을 끝냈을 때 리턴값을 CPU의 레지스터나 메모리의 어떤 지정된 위치에 넣는다. 그러면 호출한 함수가 그 위치에서 값을 꺼내온다. cube()가 doubl..
문자와 for문for(ch = 'a'; ch strcmpASCII 코드에서는 대문자가 소문자보다 코드가 낮기 때문에 조회 순서가 더 빠르다. 따라서 이런 것도 가능하다.// str1이 str2보다 아스키 코드 상 앞 순번의 문자열인지strcmp(str1, str2) 0cinint n;cin >> n; 이 경우에 사용자가 수를 입력하는 대신 단어를 입력하면 무슨 일이 벌어질까?n의 값은 변하지 않는다.입력 큐에 잘못된 입력이 그대로 유지된다.cin 객체의 에러 플래그가 설정된다.cin 메서드 호출이 false를 리턴한다.cin 메서드가 false를 리턴한다는 사실은, 수를 읽어들이는 루프를 종료시키기 위해 수가 아닌 입력을 사용할 수 있다는 것을 의미한다. 예// 숫자 말고 다른 문자 입력시 루프가 멈춤..
std::array의 특징고정 크기: 배열의 크기는 컴파일 시에 결정되며, 런타임에 변경할 수 없다.빠른 접근 속도: 메모리 상에서 연속적으로 배치되므로 인덱스를 통해 O(1)로 접근 가능.스택 메모리 사용: 일반적으로 배열은 스택 메모리를 사용하여 생성되므로, 크기가 큰 배열은 메모리 제한에 걸릴 수 있음.안정성과 타입 지원: 기본 배열보다 더 안전하며, STL의 다른 컨테이너와 호환성이 높다.std::vector의 특징동적 크기: 필요에 따라 크기를 증가시키거나 줄일 수 있다.자동 메모리 관리: 메모리 할당 및 해제 작업을 자동으로 처리.힙 메모리 사용: 크기가 큰 데이터도 힙 메모리에 동적으로 할당되므로 스택 메모리 제한을 회피 가능.추가적인 오버헤드: 크기를 조정할 때 새로운 메모리를 할당하고 데..