고급 개발자로 가는 길
반응형

C++ 10

[C++] vector 컨테이너 구현

C++로 개발 시 에서 자주 활용되는 컨테이너 이기도 하다. 다양한 기능들을 제공하여 배열보다 사용이 매우 편하며, 활용성이 좋다. 사용 예시인 코드를 구현해 보겠다. #include #include using namespace std; int main(void) { vector vecVal; vecVal.push_back(1); vecVal.push_back(3); vecVal.push_back(5); vecVal.push_back(7); vecVal.push_back(9); //vector vecData(5); vector vecData(5, 3); //vecVal.assign(vecData.begin(), vecData.end()); vecVal.assign(5, 4); vector::iterato..

C++ 2022.02.20

[C++] set, multiset 컨테이너 구현

set 컨테이너 set 은 기본적으로 less 정렬이 되며, 중복되는 value 가 insert 되면 중복 삽입하지 않음 insert, begin, end, count, find, lower 기능 제공 구현할 내용 간략 set 컨테이너 set, pair 컨테이너 복합 구현 (equal_range 방식) 탐색기능 count, find 구현 iterator 구현 조건자를 통해 key_comp 비교(less, greater 활용) lower_bound, upper_bound 구현 multiset 컨테이너 구현(find count lower, upper, equal) 구현 내용은 아래 소스와 같다. #include #include #include // greater stl 사용시 using namespace s..

C++ 2022.02.20

[C++] map, pair 컨테이너 구현

이번 글에서는 map 컨테이너와 pair 컨테이너를 동시에 사용하는 방식을 구현해 볼 것이다. map을 pair 로 구현 map 컨테이너에서 제공하는 lower_bound, upper_bound, find, insert, erase 등 구현 #include #include using namespace std; int main() { map mapData; pair pair_map; pair_map = mapData.insert(pair(0, 50)); pair_map = mapData.insert(pair(1, 51)); pair_map = mapData.insert(pair(2, 52)); pair_map = mapData.insert(pair(2, 53)); if (!pair_map.second) {..

C++ 2022.02.20

[C++] pair, multimap, adjacent_find 구현

이번 글에서는 C++ 에서 pair 컨테이너, multimap 컨테이너의 lower_bound, upper_bound 그리고 adjacent_find 에 대해 설명 해 볼 것이며, template 화 하여 함수포인터 및 객체화 방식을 구현해 볼 것이다. pair 의 경우 2가지의 다른 타입 or 같은 타입의 변수를 저장 가능한 컨테이너 multimap 의 경우 2가지의 다른 타입 or 같은 타입의 변수를 저장 가능한 컨테이너 이다. pair 의 집합이라고 봐도 된다. adjacent_find 는 중복되는 값을 빠르게 탐색하여 찾아준다.(template 함수 포인터, 객체화 방식이 존재) 구현 해볼 내용으로는 아래와 같다. 1. lower, upper_bound 구간 검색 2. adjacent_find 사..

C++ 2022.02.20

[C++] count, count_if, equal을 위한 template 함수, 함수 포인터, 객체 컨테이너 구현

C++ 에서 컨테이너 구현 방식으로 class 외에도 함수 포인터 방식이 존재한다. count, count_if 를 통해 list 중 find 하는 기능을 함수로 제공한다. count_if 의 경우 컨테이너를 3번째 인자로 전달한다. equal 의 경우 template 함수, 함수 포인터, template 함수 객체화 하여 전달하는 방식을 제공한다. 하여, 위의 내용들을 활용하여 C++ 로 구현을 해보겠다. 그럼 바로 소스를 통해 알아가 보도록 하자. 아래는 필자가 직접 구현한 소스이다. #include #include //#include #include using namespace std; bool(*pCompare)(int, int); template bool Compare(T nVal1) { if ..

C++ 2022.02.20

[C++] Compare 컨테이너 구현(vector 활용)

c++ 은 Standard Template Library 에 있는 컨테이너로 사용자가 사용하기 편하게 정의된 class 를 의미한다. 이말은 즉, template 를 통해 연산자 오버로딩 등 다양한 기법들을 개발자 편의대로 사용 할 수 있다. 또한 iterator 를 통해 반복문을 사용 할 수 있다. 이번 글에서는 Compare 하는 기능의 class 를 만들어 template 으로 컨테이너 화 해보겠다. 아래 소스는 필자가 직접 구현한 소스이다. #include #include #include #include using namespace std; template class CCompare { public: bool operator () (T nVal1, T2 nVal2 ) { if (nVal1 < nV..

C++ 2022.02.20

[C++] 동적 바인딩 과 정적 바인딩

객체지향 언어에서 빠질 수 없는 동적바인딩 기법에 대해 알아보자. 예시는 C++ 언어로 아주 예전에 ModbusTCP Protocol 을 개발했던 프로젝트로 할 것 이다. git log 를 보니 정확히 금일 날짜 기준 593일 전에 git push 되었다. 소스는 아래경로에 올려 두었다. 필자가 예전에 직접 짠 코드라 프리하게 오픈 가능해서 편하다. https://github.com/Anthony8062/ModbusTcp GitHub - Anthony8062/ModbusTcp: 프로젝트 프로젝트. Contribute to Anthony8062/ModbusTcp development by creating an account on GitHub. github.com 정적 바인딩 정적 바인딩은 컴피일 시점에 그..

C++ 2022.02.14

[C++] MFC 기반의 유저 PC 접속 응용프로그램 만들기

지난번에 개발한 SMI System Monitoring Interface 의 PC를 통한 유저 접속 기능을 제공하기 위해 많은 고민을 하였다. 접속을 허용하려면 결국 접근방식을 제공해야 하며 어떠한 방식으로 제공할지 고민을 하였다. 이번 글에서 소개할 내용은 MFC를 통한 응용프로그램을 개발하여 아래와 같이 기능을 만들어보았다. Visual Studio 2012, 32bit, MFC 환경에서 개발을 진행해 보았다. 위의 컨셉은 다음과 같다. 1. 유저 PC 에서 위 응용프로그램의 실행파일을 통해 접속 2. SMI 에서 구축한 통신망과 같은 망에 연결을 성공하면 위에서 Enable 표시 3. Login 을 통해 접근을 획득 시 socket 통해 IP 가 같은망에 있는지 Enable or Disable 처리..

C++ 2021.03.20

ModbusTcp

ModbusTcp 를 개발하게 되었다. C++ 32bit 환경에서 개발을 해보기로 했으며, 실질적으로 3일정도 소요된것 같다. 아래 링크인 Github 리포지토리에 개발한 소스를 push 해 놓았다. https://github.com/Anthony8062/ModbusTcp Anthony8062/ModbusTcp 프로젝트. Contribute to Anthony8062/ModbusTcp development by creating an account on GitHub. github.com 우선 ModbusTcp 말고도 ModbusRTU 등이 존재하고 그 중 ModbusTcp 로 개발하게 되었다. 실제적으로 실무에서도 자주 사용되는 프로토콜이다. 아래는 ModbusTcp 프로토콜의 프레임 구조 설명이다. · ..

C++ 2020.04.18
반응형