본문 바로가기

C++30

gcc warning case 정리 gcc warning case 정리 [-Waddress] 주소 표현의 의심스러운 사용에 대한 경고. void f (const char *x) { if (x == "abc") // warning: expression evaluates to false puts ("equal"); } void g (void) { if (!f) // warning: expression evaluates to false abort (); } [-Wimplicit-function-declaration] 함수를 명시적으로 선언하지 않은 채 사용한 경우에 경고. header include 누락, function declaration 누락 등.. 함수를 사용하기 전 명백하게 무엇인지 알려주지 않았다라는 의미. [-Wparentheses.. 2022. 9. 5.
ctags 지원 언어 목록 / list-language, list-map, languages ctags 옵션에 이어서 언어에 관련된 옵션들을 살펴본다. ctags 옵션 / recursive, only c, c++, exclude ctags 생성 응용 C/C++ 언어만 지정 경로로부터 recursive 하게 tagging하여 tag 수행 시간과 용량을 출력한다. 해당 경로는 필요에 따라 변경하여 사용한다. (time ctags -R --languages=C,C++ ~/. \ /usr/local.. muabow.tistory.com 1. --list-languages ctags에서 인식하는 언어 목록을 나타낸다. $ ctags --list-languages Ant Asm Asp Awk Basic BETA C C++ C# Cobol CSS DosBatch Eiffel Erlang Flex Fortra.. 2022. 9. 5.
ctags 옵션 / recursive, only c, c++, exclude ctags 생성 응용 C/C++ 언어만 지정 경로로부터 recursive 하게 tagging하여 tag 수행 시간과 용량을 출력한다. 해당 경로는 필요에 따라 변경하여 사용한다. (time ctags -R --languages=C,C++ ~/. \ /usr/local/include \ --exclude=test \ >& /dev/null) | awk '{print "Elapsed time: "$3}' ; du -h tags # 결과 Elapsed time: 0:10.80 48M tags 해당 명령의 옵션은 다음과 같다. -R recursive 하게, 즉 지정된 경로 이하 모든 디렉토리를 포함한다. 경로는 여러개를 입력 할 수 있다. 물론 중복 처리도 한다. --language=C,C++ C, C++ 관련.. 2022. 9. 4.
[C/C++] C++ sqlite3 wrapper class sqlite3을 활용하는 C++ wrapper class를 남긴다. 매번 sqlite 함수를 사용하여 코드를 짜는건 너무 귀찮기 때문.. 소스코드: class_database.cpp #include "class_database.h" // Class: SQLHandler, 데이터베이스 관리 SQLHandler::SQLHandler(string _filename) { this->sql_handle = NULL; this->open(_filename); return ; } SQLHandler::~SQLHandler(void) { return ; } bool SQLHandler::open(string _filename) { if( sqlite3_open(_filename.c_str(), &this->sql_ha.. 2022. 3. 23.
[C/C++] C++ string replace_all replace_all string find와 replace를 조합하여 replace_all 기능을 구현한다. 역시 기록용으로 정리한다. 소스코드 #include string replace_all(string &_str, const string& _from, const string& _to) { size_t start_pos = 0; while( (start_pos = _str.find(_from, start_pos)) != std::string::npos ) { _str.replace(start_pos, _from.length(), _to); start_pos += _to.length(); } return _str; } 출처: https://hashcode.co.kr/questions/239/%EC%8A.. 2022. 3. 23.
[C/C++] C++ string ltrim, rtrim, trim ltrim, rtrim, trim C++11 환경에서 작업을 하는데 trim 기능이 없어서.. :( 직접 만들기는 귀찮고 찾다보니 스택오버플로우 댓글 중에 깔끔하게 구현한 코드가 있어서 기록용으로 정리해본다. 소스코드 #include #include #include string ltrim(string _s) { _s.erase(_s.begin(), find_if(_s.begin(), _s.end(), not1(ptr_fun(isspace)))); return _s; } string rtrim(string _s) { _s.erase(find_if(_s.rbegin(), _s.rend(), not1(ptr_fun(isspace))).base(), _s.end()); return _s; } string tri.. 2022. 3. 23.
[C++] 프로그래머스, 더 맵게 더 맵게 코딩테스트 연습 > 힙(Heap) > 더 맵게 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 so.. 2022. 2. 16.
[C++] 프로그래머스, 전화번호 목록 전화번호 목록 코딩테스트 연습 > 해시 > 전화번호 목록 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은.. 2022. 2. 16.