분류 전체보기

Study/C#, Winform

[C#] Enumerable 에서 중복 데이터 삭제 (Distinct)

C#에서 Enumerable 형식의 데이터에서 중복을 없앨 때는 Distinct를 사용합니다. public static System.Collections.Generic.IEnumerable Distinct (this System.Collections.Generic.IEnumerable source); 원형은 위와 같습니다. 이것을 사용해보겠습니다. List list = new List { 1, 2, 3, 4, 4, 4, 5, 6 }; list.Distinct().ToList().ForEach(num => { System.Console.Write($"{num} "); }); System.Console.WriteLine(); double[] dArr = new double[] { 1.2, 3.3, 3.3, ..

Study/C#, Winform

[C# Winform] 스크롤바 크기 (넓이)

스크롤바 크기를 구하는 법은 다음과 같다. // 세로 스크롤바의 가로 넓이 int nVerticalWidth = System.Windows.Forms.SystemInformation.VerticalScrollBarWidth; // 가로 스크롤바의 세로 넓이 int nHorizontalWidth = System.Windows.Forms.SystemInformation.HorizontalScrollBarHeight;

Study/C#, Winform

[C# Winform] Context Menu를 Button 옆에 띄우기

Context Menu라는 것이 있습니다. 이런 메뉴를 Context Menu라고 합니다. 이 Context Menu를 버튼 옆에 띄워봅시다. 버튼을 하나 생성하고 이름(Name)은 btnTest라고 했습니다. 그리고 일반 Context Menu가 아닌 Context Menu Strip을 사용하겠습니다. 버튼을 더블 클릭하여 버튼 클릭 이벤트를 하나 만들어봅니다. private void btnTest_Click(object sender, EventArgs e) { // Context Menu Strip 생성 ContextMenuStrip contextMenuStrip = new ContextMenuStrip(); // 메뉴 아이템 1 ToolStripMenuItem menuItem = new ToolSt..

Study/C++

[C++] 자료구조 Queue(큐) 만들어 보기

자료구조에서 Queue는 FIFO(First In First Out)의 구조를 가집니다. 먼저 들어온 자료는 먼저 처리되는 형식입니다. 그렇기 때문에 자료의 삽입은 구조의 맨 뒤에서, 자료의 삭제는 맨 앞에서 이루어집니다. C++ 에서 포인터를 이용하여 Queue 만들기 Queue를 포인터를 이용해 만들어 보겠습니다. 여러 데이터를 사용할 수 있게 제네릭으로 구성하였습니다. Queue는 위와 같은 그림처럼 이루어져 있습니다. Queue라는 구조 안에 Node라는 데이터들이 줄지어 있습니다. 이 Node들은 단방향으로 길게 이어져 있으며 Queue는 이 Node들의 시작 지점(Start)과 끝 지점(End)을 기억하고 있습니다. 데이터의 삭제는 시작 지점(Start)에서, 삽입은 끝 지점(End)에서 이루..

Study/C++

[C++11] 스마트 포인터3 (weak_ptr)

C++ 에서는 스마트 포인터라는 것을 사용하여 포인터를 더욱 안전하고 효율적으로 사용할 수 있습니다. 스마트 포인터에는 다음과 같이 3가지가 존재합니다. unique_ptr shared_ptr weak_ptr 기존의 포인터의 경우에는 new와 delete가 한 쌍으로 사용되었으나 프로그래머의 실수로 delete를 하지 않게 될 경우에는 메모리 누수로 이어졌습니다. 오늘은 이 스마트 포인터 중 weak_ptr을 소개 합니다. 참조 개수를 늘리지 않는 shared_ptr (weak_ptr) (C++11) shared_ptr는 참조할 때마다 참조 개수가 늘어나지만 weak_ptr은 참조의 개수를 늘이지 않습니다. weak_ptr은 소유(Own)하는 참조가 아닌 임시적 참조(Temporary Ownership)..

Study/C++

[C++11] 스마트 포인터2 (shared_ptr)

C++ 에서는 스마트 포인터라는 것을 사용하여 포인터를 더욱 안전하고 효율적으로 사용할 수 있습니다. 스마트 포인터에는 다음과 같이 3가지가 존재합니다. unique_ptr shared_ptr weak_ptr 기존의 포인터의 경우에는 new와 delete가 한 쌍으로 사용되었으나 프로그래머의 실수로 delete를 하지 않게 될 경우에는 메모리 누수로 이어졌습니다. 오늘은 이 스마트 포인터 중 shared_ptr을 소개 합니다. 공용 소유가 가능한 포인터 (shared_ptr) (C++11) 단 하나의 소유권을 가지는 unique_ptr과는 달리 shared_ptr은 공용 소유가 가능한 포인터로 한 객체를 여러개의 shared_ptr로 공용 소유가 가능합니다. template class shared_ptr..

Study/C++

[C++11] 스마트 포인터1 (unique_ptr)

C++ 에서는 스마트 포인터라는 것을 사용하여 포인터를 더욱 안전하고 효율적으로 사용할 수 있습니다. 스마트 포인터에는 다음과 같이 3가지가 존재합니다. unique_ptr shared_ptr weak_ptr 기존의 포인터의 경우에는 new와 delete가 한 쌍으로 사용되었으나 프로그래머의 실수로 delete를 하지 않게 될 경우에는 메모리 누수로 이어졌습니다. 하지만 스마트 포인터는 기본적으로 참조가 없어질 때 메모리를 비워줍니다. (RAII - Resource Acquisition Is Initialization) 오늘은 이 스마트 포인터 중 unique_ptr을 먼저 소개합니다. 단 하나의 포인터 (unique_ptr) (C++11) unique_ptr은 단 하나의 소유권을 가지며 해당 소유권을 ..

Study/C++

[C++] std::array (C++ 표준 라이브러리 배열 컨테이너 이야기)

C++ 표준 라이브러리에 있는 고정된 크기의 배열을 캡슐화 한 컨테이너(container that encapsulates fixed size arrays.) 입니다. C++을 사용하다 보면 일반 배열을 사용하기 보다는 std::array를 더 많이 사용하기도 합니다. (도입된 표준은 C++11 에서 도입되었습니다. 그렇기 때문에 C++11 이하의 환경에서 개발을 할때는 사용하지 못합니다.) 자주 사용되는 몇 가지를 보도록 합시다. 생성자 (Initializer) 기본적으로 Aggregate 한 방식으로 사용됩니다. #include // 헤더파일 필요 // 사용법 std::array 이름 = 초기화값; // Aggregate 형식 지원 std::array arrInt1 = {1,2,3}; // 크기는 정해..

Computer/Tips

[Twitch(트위치)] 네트워크 오류 2000

요즘 김도 아조씨 방송을 보면 20초 내외로 저 오류가 뜬다. 찾아보니 광고 제거와 관련된 확장 프로그램이 문제라고 한다. 나에게 설치되어 있는 차단기는 2가지였지만 주된 문제의 원인은 "Bitdefender Anti-tracker" 였다. 해제를 하고 나니 2000 문제가 사라졌다. Adguard는 테스트 결과 문제가 되지 않았다. (나의 경우에는 문제가 되지 않았다. 끄나 켜나 똑같았다.) 혹시나 2000 문제가 생겼다면 자신이 사용하는 백신의 Anti-tracker를 의심해볼 필요가 있겠다.

Study/MFC

[MFC] Radio Button 컨트롤 (라디오 버튼)

Radio Button 이란? Check Box와 비슷하지만 약간은 다른 선택형 컨트롤 입니다. Check Box는 일반적으로 다수의 Check Box를 선택할 수 있지만, Radio Button은 일반적으로 한 Group 안에서 하나의 선택만 할 수 있도록 유도하는 선택형 컨트롤 입니다. Radio Button도 Check Box와 마찬가지로 Button 입니다. Radio Button 생성 "도구 상자" 에서 "Radio Button"을 선택하여 생성합니다. Radio Button은 "Group" 설정을 해야합니다. Group 설정에는 다음과 같은 요구 조건이 필요합니다. Group 의 가장 첫 번째 Radio Button 컨트롤은 "Group 속성"이 "True" 한 Group에 있는 Radio B..

Eskeptor
'분류 전체보기' 카테고리의 글 목록 (3 Page)