프로그래밍231 C++ ] std::sort 사용법 with 람다식 C++에서 제공하는 표준 라이브러리 함수 std::sort는 벡터, 리스트, 배열 등 다양한 컨테이너를 정렬하는 데 사용된다. 1. algorithm 헤더 포함 #include 2. std::sort 함수 원형 template void sort(RandomIt first, RandomIt last); template void sort(RandomIt first, RandomIt last, Compare comp); first: 정렬을 시작할 범위의 첫 번째 요소를 가리키는 반복자 last: 정렬을 종료할 범위의 마지막 다음 요소를 가리키는 반복자 comp: (optional) 정렬 기준을 제공하는 함수나 함수 객체로 람다식으로 표현될 수 있다 만약 비교함수 comp가 사용자에 의해 제공되지 않은 경우 기.. 2024. 2. 20. C++ ] string -> char *, char * -> string 변환 C스타일 문자열 char *에서 string으로 변환하거나 반대로 변환하는 법 char * to string const char *pChar ="hello"; string str = pChar; 또는 string str(pChar); char *에서 string으로 바꾸는건 간단하다. = 연산자를 통해 초기화하거나 생성자를 통해 초기화하면 된다. sring to char * string str = "hello"; const char *pChar = str.c_str(); 또는 char buf[str.length() + 1]; strcpy(buf, str.c_str()); string에서 char *로 변환할 때는 string의 수명에 주의해야한다. 위의 변환 방법 중 첫번째 방법의 경우 string 변수.. 2024. 2. 18. C++ 에서 구조체와 클래스의 차이 아래에서 보듯이 C++에서 구조체와 클래스는 사용방법과 기능이 매우 유사하다. C++의 구조체는 멤버함수를 추가할 수도 있으며, 명시적으로 생성자/소멸자를 추가할 수 있고 명시적으로 정의하지 않으면 수명주기에 따라 호출되는 기본 생성자/소멸자가 컴파일러에 의해 제공된다는 점이 클래스와 동일하다. 반면 구조체와 클래스의 주요 차이는 접근제어 지시자의 기본값이 다르다는 것이다. 접근제어 지시자를 따로 명시하지 않고 정의한 경우 구조체는 기본적으로 public 이고, 클래스는 기본적으로 private이다. #include using namespace std; struct Point { int x; int y; Point(int _x, int _y) : x(_x), y(_y) { cout 2024. 2. 14. C++ ] 벡터의 최대값과 최소값 찾기, max_element, min_element C++에서는 헤더에 포함된 std::max_element와 std::min_element 함수를 사용하여 벡터의 최대값과 최소값을 찾을 수 있다. 리턴값은 가장 큰 또는 가장 작은 원소의 iterator이고 애스터리스크를 붙여 역참조해서 값을 가져올 수 있다. max_element 함수 사용 예시 #include #include #include int main() { std::vector numbers = {10, 5, 8, 3, 12, 7}; auto max_iterator = std::max_element(numbers.begin(), numbers.end()); int max_value = *max_iterator; std::cout 2024. 2. 10. C언어 ] qsort (Quick Sort, 퀵정렬) 함수 사용법 C언어 표준 라이브러리에 포함된 qsort 함수는 퀵 정렬(Quick Sort) 알고리즘을 사용하여 배열을 정렬하는 데에 사용된다. 아래는 qsort 함수의 사용법에 대한 예시이다. 1. 헤더 파일 include qsort 함수를 사용하려면 stdlib.h 헤더 파일을 포함해야 한다. #include 2. 비교 함수 작성 qsort 함수를 사용하기 위해선 정렬을 위해 사용할 비교 함수를 만들어야 하며, 이 함수는 두 요소를 받아들여 비교한 결과를 반환해야 한다. 반환값이 음수, 0, 양수인지에 따라 정렬의 순서가 결정된다. 비교 함수의 반환값이 양수면, qsort 함수는 두 요소의 순서를 바꾼다. int compare(const void *a, const void *b) { // 비교 로직 작성 retu.. 2024. 1. 30. 윈도우 소켓 ] connect() 함수의 타임아웃은 21초 connect() 함수의 타임아웃 TCP connection은 3-way-handshake에 의해 이루어지는데 클라이언트는 SYN 패킷을 전송한 이후 SYN+ACK를 수신할 때까지 대기하게 된다. 이때, 서버기기가 네트워크에 연결되어 있고 포트가 닫혀있는 경우 서버기기는 SYN+ACK 대신 RST 패킷을 보낼테니 클라이언트는 서버에 연결할 수 없다는 걸 RTT(Round Trip Time)만에 알 수 있다. 로컬네트워크에서 이 시간은 몇 밀리초이지만 인터넷에서는 그 이상이 될 수 있다. 서버기기가 네트워크에 없는 경우 클라이언트는 응답을 받지 못한채 SYN 패킷 전송을 재시도할 것이다. 이 때 재시도 횟수와 타임아웃은 운영체제의 TCP/IP protocol stack 설정값에 따라 달라질 수 있는데 윈도.. 2023. 12. 25. 윈도우 소켓 ] blocking / non-blocking 소켓 사용 시 소켓함수의 리턴 조건 recv() Blocking socket : 수신된 데이터가 없으면 블록되고, MSG_WAITALL 플래그를 사용하면 원하는 크기만큼 도착할 때까지 기다릴 수 있다. Non-blocking socket : 수신된 데이터가 없으면 WSAEWOULDBLOCK으로 즉시 리턴한다. WSAGetLastError() 함수를 사용하여 에러 코드를 확인할 수 있다. TCP / UDP 비교 : 동일하게 Blocking socket에서는 소켓 수신 버퍼에 도착한 데이터가 없으면 블록되고, 소켓 수신 버퍼에 도착한 데이터가 있을 시 이를 응용 프로그램이 제공한 버퍼에 복사한 뒤 리턴한다. send() Blocking socket : 소켓 송신 퍼버에 여유 공간이 없으면 블록되고, 응용 프로그램이 전송 요청한 데이터를 소켓 .. 2023. 12. 24. IcmpSendEcho IcmpSendEcho 함수는 Windows 운영 체제에서 ICMP 에코 요청을 보내고 응답을 받는 데 사용되는 함수로 주로 네트워크 연결 상태를 확인하거나 호스트의 응답 시간을 측정하는 데 사용됩니다. 📝 ICMP (Internet Control Message Protocol) : 네트워크에서 발생하는 여러 상태 및 오류 메시지를 전송하는 데 사용되는 프로토콜 DWORD IcmpSendEcho( HANDLE IcmpHandle, IPAddr DestinationAddress, LPVOID RequestData, WORD RequestSize, PIP_OPTION_INFORMATION RequestOptions, LPVOID ReplyBuffer, DWORD ReplySize, DWORD Timeout .. 2023. 12. 23. strchr, strrchr strchr 및 strrchr 함수는 C 표준 라이브러리 함수로 문자열에서 특정 문자를 찾는 데 사용되는 함수들이다. strchr 문자열 앞에서 부터 찾고 strrchr 는 뒤에서 부터 찾는다는 차이가 있다. strchr #include char *strchr(const char *str, int c); 문자열에서 특정 문자 c를 찾아 첫 번째로 등장하는 위치를 반환한다다. 만약 문자 c가 문자열에 없으면 NULL을 반환한다. 사용 예시. #include #include int main() { const char *str = "Hello, World!"; char target = ' '; // 문자열에서 ' '공백문자를 찾기 char *result = strchr(str, target); if (resu.. 2023. 12. 22. strpbrk strpbrk char *strpbrk(const char *str1, const char *str2); str1: 검색 대상이 되는 문자열 str2: 검색할 문자들로 이루어진 문자세트 반환 값: str1에서 str2에 지정된 문자세트 중 첫 번째로 매치되는 문자의 포인터. str1, str2 둘 다 null terminated string이어야 하고 일치여부 확인시 null 문자는 고려하지 않음. 반환값이 NULL이라면 일치하는 문자를 못찾은 것. 사용 예시 #include #include int main() { // str1에서 첫번째로 나오는 모음문자 포인터를 찾음 const char *str1 = "Hello, World!"; const char *str2 = "aeiou"; char *resul.. 2023. 12. 21. 이전 1 2 3 4 5 6 7 ··· 24 다음