목록c++ 문법 (17)
거의 알고리즘 일기장
시작하기에 앞서 앞서 쓴 멀트스레드의 기본 사용법에 대한 포스팅에 이런 글이 있었다. https://kunkunwoo.tistory.com/116 멀티스레딩 기본 사용법 필요성 요즘에는 cpu하나에 여러개의 코어가 달려있다. 이를 효율적으로 사용하기위해 나온 기법이 멀티스레딩이다. 멀티스레드란? 병렬처리 기법중 하나로 cpu안에 있는 여러개의 코어를 이용해서 더욱더 빠른 연.. kunkunwoo.tistory.com 이번에는 이 레이스 컨디션이 무엇인가? 와 해결방법에 대해 다뤄보겠다. 레이스 컨디션이란? 이 부분은 예제를 보면 쉽다. 예제를 알아보자 문제점 예제 #include #include #include #include #include using namespace std; int shared_me..
필요성 요즘에는 cpu하나에 여러개의 코어가 달려있다. 이를 효율적으로 사용하기위해 나온 기법이 멀티스레딩이다. 멀티스레드란? 병렬처리 기법중 하나로 cpu안에 있는 여러개의 코어를 이용해서 더욱더 빠른 연산을 하게하는 기법이다. 구조에 대해서는 밑의 그림을 보면 이해가 쉬울것이다. 위의 그림을 보면 이미 일을 처리하고 있던 main thread가 다른 스레드에게 일을 나눠주고 받는 형태를 볼수있다. 예를 들면 밑처럼 실행하고 받는다고 생각하면 된다. 사용법 ( 주석에 자세히 설명해둠 ) #include #include #include #include using namespace std; //서로 못건드리게 함 mutex mtx; //mutual exclusion int main() { //여러가지 일을..
지금까지 나는 class, struct로 정의해서 return하는 방식으로 여러개의 값을 리턴하는 방법을 사용했었는데, 강의를 보다가 엄청 편리해보이는 새로운 방식이 나와 소개해볼까 한다. 사용법 #include #include using namespace std; auto my_func() { return tuple(123, 456, 789); } int main() { //17버전 auto [a, b, c] = my_func(); cout
사용법 #include #include #include #include using namespace std; void goodbye(const string& s) { cout
파일입출력을 하다보면 파일의 임의 위치에 있는 값들을 받거나 쓰고 싶을 수있다. 이때 사용하는 방법이다. #include #include #include using namespace std; int main() { const string filename = "my_file.txt"; //make a file { ofstream ofs(filename); for (char i = 'a'; i
아스키 파일, 바이너리 파일 특징 아스키 파일 : 입출력이 상대적으로 간단함, 느림 바이너리 파일 : 입출력이 상대적으로 복잡함, 빠름 ( 바이너리 파일은 이진수로 저장되기 때문에 데이터가 어디까진지 알수가없음 그래서 데이터를 몇개를 보낼건지 보내는 사람, 읽는 사람 모두 알고있어야 한다는 불편함이 있다. ) 아스키파일 입출력 코드 #include #include #include using namespace std; int main() { //write, read밑에 if문 true, false를 이용해서 마음대로 조절하세요. //수동으로 닫을 수도 있지만 이렇게 하는경우가 많음 //write if(false) { ofstream ofs("my_first_file.dat"); //ofs.open("my_..
필요이유 어떤 문자열이 우리가 원하는 형식인지 아는 것은 입출력데이터를 처리할때 중요한 문제이다. ex) 주어진 문자열이 이메일 주소인가?, 전화번호 형식인가? 전 시간에 했던 입력 유효성 검사 방법으로도 처리 할 수도 있겠지만, 번거롭기도 하고 쉬운 처리방법은 아니다. 이때 간단하게 쓸수있는게 정규 표현식이다. 사용법 코드 #include #include //regular expression using namespace std; int main() { //+한개 이상의 문자, * 입력을 안받아도 괜춘 //regex re("\\d+"); //regex re("[ab]"); //regex re("[[:digit:]]{3}"); //regex re("[A-Z]+"); //regex re("[A-Z]{1,5}..
사용이유 파일이나 사용자의 입력을 받을때 그게 적절하게 들어왔는지 안왔는지 알기 위해 사용. 사용법 코드 #include #include using namespace std; void printCharacterClassification(const int& i) { cout
사용법 코드 #include #include using namespace std; int main() { stringstream os; //흘려주는것, 뒤에다 그냥 붙임, insert생각하면됨 //endl도 들어감 os
https://codeforces.com/problemset/problem/96/A Problem - 96A - Codeforces codeforces.com 영어 지문 연습겸 코드포스 쉬운문제를 풀다가 발견한 함수다. c++에서 특정 문자열이 있는지 없는지 알아보는데 매우 유용한 함수다. 코드 및 사용법 #include #include #include using namespace std; int main() { string dangerousSituation1 = "1111111"; string dangerousSituation2 = "0000000"; string situation; cin >> situation; //string::npos는 특정문자열이 안에 없을때 반환하는 값 (지멋대로의 수임)이고..