목록코딩/C++ (44)
영넌 개발로그

https://youtu.be/2gSW9Z_3SM4 구현영상 . . . 구현된 기능 1. start 버튼을 누르면 랜덤으로 지뢰 배치 2. 마우스 좌클릭시 지뢰가 있는 테두리까지 열림 (숫자를 표시할 수 있는 부분까지) 3. 노란 박스 위에서 마우스 우클릭시 지뢰가 있는 곳을 표시할 수 있음 -> 깃발 표시 4. 깃발 표시 위에서 마우스 우클릭시 모르는 부분을 표시할 수 있음 -> 물음표 표시 5. 숫자 표시 위에서 마우스 좌, 우 동시 클릭시 - 지뢰가 있으면 지뢰 위치가 깜빡거림 - 지뢰가 없으면 칸이 열림 6. 지뢰를 전부 찾으면 win, 지뢰를 클릭하면 lose 7. restart 버튼을 누르면 모든 칸 초기화 해당 링크에는 최종 실행 프로그램 동작 영상이 담겨있으며, 재생목록에 각 기능 구현 방..

container는 data를 저장하는 공간, iterator는 container 안에 있는 data를 순차적으로 모두 access할 수 있는 방법을 제공한다. 그럼 그 데이터를 읽어서 무엇을 할지에 대한 처리는?? 그런 것을 알고리즘(algorithm)이라고 한다. 이 또한 STL 라이브러리에서 제공한다. 여기서는 핵심적인 몇 가지만 다뤄보도록 하겠다. 아래 7개는 대부분의 컨테이너에 대해서 동작하며, 통일된 방법으로 사용할 수 있다. 1. find container 자체에서 find 메소드를 제공하는 컨테이너도 있기는 한데 그렇지 않은 것들도 있다. 내가 원하는 데이터가 어디있는지 찾기 위해 사용하는 알고리즘이다. 아주 똑같아야만 찾을 수 있다. 2. find_if find랑 비슷한데 내가 찾고자 하..

container map 은 hash table과 같은 일을 한다. hash table은 key와 value값을 가지고 있는 일방향 암호화 방식이다. 검색할 때 사용하는 것을 key라고 하고 진짜 값은 value에 저장되어 있는 자료구조이다. 맵에서는 순서가 중요하지 않다. 검색해서 key값을 이용해 바로 찾아갈 수 있기 때문이다. 맵에 값을 넣는 method는 insert를 사용한다. 반환되는 형식은 container set과 같이 pair로 받는다. 쌍으로 받으며 삽입에 성공하면 true 실패하면 false를 반환한다. 맵에서 값을 찾는 method는 find를 사용한다. 찾는 타겟의 위치를 iterator로 반환한다. map for #include #include #include using name..

container 중 set 이라는 것은 집합을 의미합니다. 값을 중복없이 저장하는 데에 자주 사용하고 집합 내에 유무를 체크하는데에 사용된다. 따라서 중복성 검사를할 때에 사용되는 자료구조 이기도하다. (check if element already exists) 예를 들어 문장 단위로 잘라서 set으로 만든 후, 그 문장이 다른 set에 나타나는지 안나타나는지에 사용하여 표절 검사를 할 수 있다. 집합 내에 유무를 체크하기 위해서는 method find를 사용한다. set은 증가하는 형태로 저장하는 특징이 있기 때문에 정렬된 형태로 뽑아낼 수 있다. 삽입할 때는 method insert를 사용한다. 반환할 때는 쌍으로 을 반환한다. bool 값은 중복성에 따라 true와 flase를 반환하고, iter..

STL (Standard template library) C++의프로그래밍 개발 효율성을 높여주는 라이브러리이다. C++ 국제 표준에서 제정만하고 구현은 개발자가 알아서 하는 것이다. data structure와 algorithm 등을 구현해둔 라이브러리이다. container에 데이터를 저장할 수 있는 공간이다. vector, array, deque(덱): double ended que, list 등이 있다. deque는 앞과 뒤 모두 in/out이 가능하다. 일반적인 큐처럼도 사용이 가능하다. vector와 array, deque는 모두 배열이어서 연속된 공간이 필요하다. 이런 연속되지 않은 공간을 사용하기 위해 C언어에서 SLL과 DLL을 사용했는데, STL 에서는 SLL은 forward list,..

Function template 여러가지 타입(type)을 동시에 처리 가능한 함수이다. 서로 인수의 타입이 다르고 같은 이름의 함수를 만드는 것 외에 다른 방법으로 Function template을 사용할 수 있다. 이를 통해 오버헤드를 줄일 수 있다. default 타입도 지정해줄 수 있고, 여러개를 만들 수도 있다. default 타입은 마지막에만 지정해줄 수 있다. 사용법 : template 예를 들어 integer에 대해서만 동작하는 함수 get_max가 있다고 해보자. 이 함수는 둘 중 큰 값을 반환한다. 이 때 double type 인수 5.8과 10.09를 넣으면 형 변환이 일어나고 10이 출력되게 된다. ( double형에서는 동작하지 않는다) #include using namespace..

exception handling c언어에서 error가 나면 stop으로 프로그램 종료가 되었다. 이건 별로 좋지 않은 현상이다. 에러시 다른 조치를 취할 수 있도록 해주기 위해 예외를 처리해주어야 한다. 그거를 하는 방법엔 try catch 라는 방법이 있다. 예를 들어, 할당된 영역을 벗어나서 메모리를 사용하려하면 런타임 에러가 뜬다. (Expression: vector subscript out of range) 디버깅 모드에서는 런타임 동안에 체크를 해서 보여준다. 코드를 상용화할 때에는 릴리즈 모드로 해야하는데 릴리즈 모드에서는 속도가 중요하기 때문에 메모리를 벗어난다던가 하는 것에 대해서는 체킹하는게 빠진다. 따라서 릴리즈 모드에서는 아래와 같은 에러가 나지 않고 콘솔에서 잘 실행 되는 것을 ..

text file은 열었을 때 사람 눈으로 읽을 수 있는 파일이다. ASCII 값으로 저장된다. binary file은 열었을 때 사람 눈으로 읽기 어려운 파일이다. hexa(binary) value로 저장된다. int main(){ ofstream of("binary.bin", ios::binary); int i = 15; //이렇게 쓰면 binary 파일이어도 아스키값으로 쓰임 //of

파일을 이용한 input, output을 작성해보자 헤더는 #include 이 필요하다. 파일을 읽을 때는 ifistream 클래스, 파일을 쓸 때는 ofstream 클래스를 사용해도 된다. fstream 클래스의 f라는 객체를 만들어 0~9 까지 숫자를 쓰는 코드이다. 읽거나 쓰는 것에 대한 모드를 지정해주어야한다. 이는 std::ios::out 이나 std::ios::in 으로 작성한다. 파일 쓰기> #include #include using namespace std; int main() { fstream f("test_1.txt", ios::out); if (!f) { cout