원글: https://mystes.tistory.com/121 주요 특징 std::deque는 std::queue와 유사한 특징을 가집니다. (이하, "데크" 또는 "디큐", "덱") queue는 FIFO (first in, first out) 구조를 가집니다. 따라서 일반적인 큐는 한쪽에서 자료를 입력하면, 다른 한쪽에서 데이터가 빠져 나오는 구조입니다. 반면 deque는 양쪽에서 데이터의 삽입, 삭제가 가능하기 때문에 FIFO와 더불어 LIFO (last in, first out) 의 특징 역시 가집니다. 일련의 컨테이너와 같이 deque 역시 sequencial(연속적인) 데이터 형태를 가지며 vector의 특징과 동일하게 인덱스를 통한 접근 (랜덤 엑세스), 순회 등과 같은 기능을 제공합니다. 기..
c++
원글: https://mystes.tistory.com/121 주요 특징 std::vector는 STL에서 가장 인기있는 템플릿 라이브러리 중 하나입니다. 컨테이너의 앞 또는 뒤에 자유롭게 추가 및 삭제가 가능하며 인덱스를 통한 접근(랜덤 액세스) 역시 지원합니다. 각 요소는 연속적으로 저장되므로 반복자를 통해 요소에 액세스 할 수 있을 뿐만 아니라 요소에 대한 일반 포인터에 오프셋을 사용하여 요소에 액세스할 수도 있습니다. 즉, 벡터의 요소에 대한 포인터는 배열의 요소에 대한 포인터를 기대하는 함수에 저장될 수 있습니다. 벡터의 저장 공간은 자동으로 처리되며 필요에 따라 확장됩니다. 벡터는 향후 증가를 처리하기 위해 더 많은 메모리가 할당되기 때문에 일반적으로 정적 배열보다 더 많은 공간을 차지합니다...
C++를 주로 사용하는 개발자라면 빼놓을 수 없는 것이 바로 STL의 Container입니다. 자료구조를 배워본 사람이라면 각 컨테이너마다 어떤 특징이 있고, 무엇을 기반으로 해당 컨테이너가 개발되었는지 대략적으로 파악할 수 있을 것입니다. 본문에서는 컨테이너에 대한 기본적인 개요와 종류를 알아보고, 향후 각 컨테이너에 대한 자세한 설명과 특징, 장단점 등을 정리해 보겠습니다. 컨테이너? 컨테이너는 STL 알고리즘과 결합하여 다양한 데이터 구조를 표현할 수 있도록 설계된 자료형입니다. 각 컨테이너는 자신만의 특징을 가지고, 개발자는 자신이 구현하고자 하는 목적에 맞는 컨테이너를 채택하여 프로그램의 효율성을 높일 수 있습니다. 닭잡는데 소잡는 칼을 사용할 필요는 없습니다 효율성? 효율성을 수치화할 수 있는..
다중 클라이언트가 접속하는 서버를 구현하는 베이스 코드입니다. 기존 1:1 방식이 아닌, N 명의 클라이언트에 대하여 select를 활용하여 각 클라이언트의 요청을 처리합니다. 현재 진행 중인 웹 브라우저와 리눅스 기반 응용 프로그램 사이, 중계 서버를 만들기 위하여 테스트 한 코드입니다. 개요 먼저, 일반적으로 알고 있는 socket의 개념과 별개로 select에 대하여 간략히 설명하자면, select는 네트워크 프로그래밍에서 사용되는 함수 중 하나로, 여러 개의 소켓을 모니터링하고 입출력 가능한 상태를 감지하는 기능을 제공합니다. 이를 통해 동시에 여러 소켓을 관리하고 비동기 네트워크 통신을 구현할 수 있습니다. 일반적으로 select는 유닉스 기반의 운영체제(Linux, mac, FreeBSD 등)..
GS 인증을 받는 과정 중 암호가 저장된 일부 설정 파일(ini, json 등)에 대한 암호화 과정이 필요했습니다. 본문은 Linux (ARMv8) 환경에서 Crypto++를 설치(빌드)하고 예제 코드를 테스트하는 과정을 기록한 글입니다. 테스트 환경 Nvidia Jetson Xavier NX (Jetpack 4.6) Ubuntu 18.04 (Linux for Tegra) GCC 7.5.0 (C++17), CMake 3.24 설치 과정 먼저 Github를 통해 프로젝트를 다운 받았습니다. git clone https://github.com/weidai11/cryptopp.git cd cryptopp Crypto++는 GNUmakefile을 통해 리눅스 빌드를 지원하고 있었습니다. 저는 현재 개발 중인 프..
MFC 기본 함수 중 DeleteDirectory(..) 함수는 폴더 내 파일 또는 하위 디렉토리가 존재할 경우, 해당 폴더까지 전부 삭제 후 동작된다. 따라서 야매로 만든 간단한 방법. cmd 명령어를 사용하는 코드이다. void CClientControl::DeleteDirectory_Shell() { CString strCmd; CString strTarget; // strTarget.Format(삭제할 폴더 경로 + 이름); // strTarget.Format(_T("E:\\Working\\test_folder")); 예시 strCmd.Format(_T("/c echo Y | cmd /c rd /s %s"), strTarget); ::ShellExecute(NULL, "open", "cmd", (..
[환경] IDE : Visual Studio 2019 Lib : OpenCV 4.1.1 [증상] 별다른 코드 없이, opencv_world411d.lib 라이브러리 로드 후, 프로그램을 실행하고 바로 종료했을 때 Debug 창에 메모리 누수 탐지 OpenCV 관련 코드는 cv::VideoCapture 변수(URL주소) 밖에 없었음. [원인] OpenCV 라이브러리가 로딩되는 시점과, MFC 공용 DLL이 로드되는 시점 상 충돌 발생으로 예상 [해결] 프로젝트 속성 -> 링커 -> 입력에서 구성: Debug 선택 후, 지연 로드된 DLL 부분에 opencv_world411d.dll 추가 그 외, 참조되는 OpenCV 경로 상 bin파일 내 다른 dll이 있으면 해당 dll까지 모두 추가.
문제 코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다. 예를 들어 코니가 가진 옷이 아래와 같고, 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다. 종류이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다. 착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다. 코니는 하루에 최소 한 개의 의상은 입습니다. 코니가 가진 의상들이..
문제 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 입출력 예제 phone..
이번 예제는 아주 간단한 프로그램으로, 단순하게 + 버튼을 누르면 숫자가 증가하고, - 버튼을 누르면 숫자가 감소하는 프로그램입니다. 본 예제는 학습을 위하여 SubClassDlgItem과 Timer를 활용하여 구현되었습니다. // SampleDlg.h class CSampleDlg : public CDialogEx { // 중략.. afx_msg BOOL OnCommand(WPARAM wParam, LPARAM lParam); afx_msg void OnTimer(UINT_PTR nIDEvent); public: intm_nCount; BOOLm_threadFlagPlus; BOOLm_threadFlagMinus; CWinThread *m_Thread; voidUpdateCount(); BOOLDest..