1월, 2023의 게시물 표시
{{ label!='' ? 'Label : ' : (q!='' ? '검색 : ' : '전체 게시글') }} {{ label }} {{ q }} {{ ('('+(pubs|date:'yyyy-MM')+')') }}

[C++] 스터디 CPPALOM 9주차: 뇌를 자극하는 C++ STL Chap 7,9

파워 포인트 파일(.pptx)을 Markdown으로 변환하여 업로드하였음) # <br>CPPALOM # <br>9주차 – 뇌를 자극하는 C++ STL Chap 7,9 한수빈 # <br>set 컨테이너 연관 컨테이너 중 단순한 컨테이너로, key라 불리는 원소(value)의 집합으로 이뤄진 컨테이너이다. 연관 컨테이너는 균형 이진 트리를 사용하므로 찾기 연산에서 로그 시간의 복잡도를 보인다. ![](img%5Cweek9_subin0.png) # <br>set 컨테이너에서의 삽입 set 컨테이너는 중복 삽입을 허용하지 않는다. 또한 원소는 자동 정렬되며 정렬 기준으로 less를 사용한다. ```C++ #include <iostream> #include <set> using namespace std; void main( ) { set<int> s; // 정수 원소를 저장하는 기본 정렬 기준이 less인 빈 컨테이너 생성 s.insert(50); //랜덤으로 원소(key)를 삽입한다. s.insert(30); s.insert(80); s.insert(40); s.insert(10); s.insert(70); s.insert(90); set<int>::iterator iter; // 기본 정렬 기준이 less인 set의 양방향 반복자 for( iter = s.begin() ; iter != s.end() ; ++iter) cout << *iter << " "; // inorder 2진 트리 탐색 순서로 출력된다. cout << endl; s.insert(50); //중복된 원소(key)를 삽입한다. 실패!! s.insert(50); for( iter = s.begin() ; iter != s.end

[Troubleshooting] C++ Native 프로젝트의 NuGet 배포

설명   Microsoft의 문서에는 C# 프로젝트에 대한 NuGet 활용만 자세히 기술되어 있고, Native C++에 대한 문서는 부족함. 간단한 C++ 프로젝트를 패키징하고 배포하는 과정에서 문제가 발생함. 참고한 링크는 다음과 같음: https://www.cognex.com/ko-kr/blogs/deep-learning/research/dependency-management-c-based-windows-application-using-nuget https://digitalhouseblog.wordpress.com/2019/08/22/how-to-make-a-nuget-package-for-c/   전자의 경우 빌드에 대한 구성을 패키지에 포함하지 않아 Visual Studio에서 패키지 매니저를 통한 라이브러리 설치 시 추가적으로 packages/ 폴더 내의 해당 라이브러리 디렉토리를 include해주어야 하는 문제가 있었음.   후자의 경우 이를 처리할 수 있어 보이나, 경로에 대한 적절한 설명이 부족하여 문제를 겪음. 원인   build를 위한 props 파일의 구성 해결   AdditionalIncludeDirectories 항목을 $(MSBuildThisFileDirectory)\..\include 로 설정해주어서 해결하였음. MSBuildThisFileDirectory 매크로는 말 그대로 해당 파일의 경로임. .nuspec에서 build 폴더에 빌드 설정을 담은 .props 파일을 담도록 명세하였음 .props에서 말하는 MSBuildThisFileDirectory는 NuGet 패키지 매니저에 의해서 설치된  {ProjectPath}/packages/build/ 경로가 될 것임. .nuspec에서 포함될 헤더 파일들은 include 폴더에 담도록 명세하였음. 따라서 $(MSBuildThisFileDirectory)\..\include로 설정해주는 것이 적절함. 상술한 링크에서는 props가 가장 root에 있었기 때문에 링크에서 설명한 prop

[C++] 스터디 CPPALOM 8주차: 뇌를 자극하는 C++ STL Chap 5-6

파워 포인트 파일(.pptx)을 Markdown으로 변환하여 업로드하였음) # <br>CPPALOM # <br>8주차 – 뇌를 자극하는 C++ STL Chap 5-6 한수빈 # <br>STL이란 * STL은 표준 C++ 라이브러리의 일부분으로 Standard Template Library의 약자이다. * 다음은 STL의 구성 요소이다: * 컨테이너(Container): 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 한다. * 반복자(Iterator): 원소를 가리키고, 가리키는 원소에 접근하여 다음 원소를 가리키게 한다. * 알고리즘(Algorithm): 정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿이다. * 함수 객체(Function Object): 함수처럼 동작하는 객체로 operator() 연산자를 오버로딩한 객체이다. 컨테이너와 알고리즘 등에 클라이언트 정책을 반영하도록 한다. * 어댑터(Adaptor): 구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성 요소로 변경한다. * 할당기(Allocator): 컨테이너의 메모리 할당 정책을 캡슐화한 클래스 객체이다. # <br>컨테이너 표준 시퀀스 컨테이너: 컨테이너 원소가 자신만의 삽입 위치(순서)를 가지는 컨테이너 표준 연관 컨테이너: 저장 원소가 삽입 순서와 다르게 특정 정렬 기준에 의해 자동 정렬되는 컨테이너 배열 기반 컨테이너: vector, deque 노드 기반 컨테이너: list, set, multiset, map, multimap # <br>vector 컨테이너 * vecto는 시퀀스 컨테이너이므로 추가한 순서대로 출력된다. * 또한, 배열 기반 컨테이너이므로 operator[] 연산자로 저장 원소에 접근할 수 있다. ```C++ #include <iostream> #include <vector> using namespa