목록컴퓨터/C++ (11)
취미생활
아래는 깃허브 주소 GitHub - DJmong/frozenTableView: I made a frozen Column Table I made a frozen Column Table. Contribute to DJmong/frozenTableView development by creating an account on GitHub. github.com 작년에 프로젝트 투입되면서 틀 고정 기능이 필요해서 구현할 일이 있었는데, 그때 구현해뒀다가 성능 이슈 때문에 사용하지 못한 코드다. 당시에는 QTreeWidget을 사용하면서 각 셀마다 paintEvent를 override한 QObject를 올려두어서 그런지 해당 기능을 사용했을 때 굉장히 느려지는 현상이 발생했다. 다행히 다른 방식으로 해결했지만, 그때 ..
개발 도중 처리 시간 때문에 쓰레드를 추가로 돌릴 필요가 생겼다. 나는 Qt, C++17 를 사용하기 때문에 QThread, pthread std::thread 등.. 여러가지 선택지가 있었고 기존에는 주로 QThread를 통해 함수를 실행했었다. 하지만, 해당 프로젝트에서 QThread 를 상속받아 클래스를 새로 만들기에는 품이 너무 많이 들어가는 것 같았고 이번에는 std::thread를 사용해보기로 했다. #include #include int main() { // Create a lambda function that prints "Hello, World!" to the console auto hello = []() { std::cout
중국에 출장을 와서 마라탕도 먹어보고.. 근로기준법에 적혀있는 근무시간도 어겨가면서 일을 하면서 프로그래밍도 해보고있는데, 별 생각없이 코드를 보다가 그런 생각이 들었다. 아래 코드는 회사에서 사용하고 있는 코드는 아니고, 예시로 내가 적은 코드인데 #include #include using namespace std; void A() { cout
모던 C++ 에서는 함수포인터를 템플릿으로 관리한다. #include #include void greet() { std::cout
C++ 11 부터 데이터를 중괄호로 초기화할 수 있는 기능이 추가되었다. 이게 무슨 말인고 하니 #include #include #include using namespace std; int main(int argc, char *argv[]) { vector a; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(4); for(auto it : a) { cout
C++로 개발하다 보면 프로토콜 관련 코딩을 진행할 때 비트단위 변수 제어가 필요한 상황이 자주 생긴다. 그럴 때 마다 등장하는게 구조체 비트 필드이다. 구조체 비트 필드는 별 거 없다. 구조체의 변수들을 비트 필드로 설정해놓은 것이 구조체 비트 필드다. 비트 필드는 쉽게 말해서 비트 값을 제한해둔 변수라고 생각하면 된다. 예시 코드는 아래와 같다. //비트 필드 예시 코드 unsigned int _data1:8; // 8bit unsigned int _data2:4; // 4bit unsigned int _data3:3; // 3bit 이렇게 비트 필드를 선언할 수 있는데, 정수 자료형은 모두 사용 가능하지만 가급적이면 unsigned int, int, bool을 사용하라고 권장하고 있다. https:..
접근제한자는 클래스 내부의 정보를 어느 부분까지 사용할 수 있는지 설정해준다. C++는 JAVA나 python과는 다르게 기본 값(default)이 존재하지 않는다. 그래서 Class 선언을 할 때 접근 제한자를 설정해주어야 한다. 이런 부분은 알아두면 좋을 듯
구조체(Struct)는 Class가 없는 C언어 에서는 빛과 소금이었다. 여러 변수를 필요로 하는 함수에 입력을 할 때 구조체 하나만 사용한다면 단 하나의 인자로 여러 값을 바꿀 수 있다. 예시 function(int num, char *str, float pi, char val); 여러 변수를 호출 인자로 사용하는 함수 function이 있다고 생각해보자. 이 function을 호출하기 위해선 int, char 포인터, float, char 등 여러가지 변수를 사용해야 하기 때문에, 호출할 때 마다 실수하기 쉽다. 하지만, number 라는 구조체로 이를 묶어서 한 번에 관리한다면 어떨까? function(number val); 구조체 하나만 인자로 사용하기 때문에 함수호출시, 어려움 없이 사용할 수 ..